Hej! Använd Tack för ditt svar! Dock är originalbekymret värre än mitt exempel visar. I en applikation jag gjort måste det utföras en växling från ett kalkylblad till ett annat i samband med att filen sparas via en annan procedur. Problemet är att Workbook_BeforeSave inte kör denna växling, om save-kommandot skickas från en procedur, utan endast om arbetsboken sparas på vanligt sätt. Jag har tillfälligt arbetat runt bekymret, men jag är alltjämt förbryllad över att Workbook_BeforeSave verkar hoppa över vissa rader, om det initieras av Activeworkbook.save. Jag har fått detta problem vid tester i både Office 2000 och Office XP. Det är ineffektivt att använda Select objeketet. Selectobjektet är bara till för macros. När du programmerar bör du adresera celler direkt. Använd with istället. Tack för ert engegemang! Det har nu gjorts klart för mig från annat håll att detta är ett känt problem i Excel-VBA. Vissa rader, som Select, Sort, m fl, hoppas över i Workbook_BeforeSave, om arbetsboken sparas m h a en annan procedur. Problemet lär ha funnits sedan Office97. Man får helt enkelt hitta andra knep för att åstadkomma det man vill då arbetsboken sparas på detta sätt.Problem med Workbook_BeforeSave i Excel 2000
Vet någon varför Workbook_BeforeSave beter sig olika om det körs genom att man sparar arbetsboken på normalt sätt, eller om arbetsboken sparas via kod i en modul?
I mitt Workbook_BeforeSave står följande:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Range("n26").FormulaR1C1 = "Hjälp"
Sheets("Blad2").Select
Range("n27").FormulaR1C1 = "Hjälp"
End Sub
Om jag nu sparar min arbetsbok via Arkiv-Spara, så körs alla programraderna ovan. D v s innan filen sparas skrivs texten "Hjälp" in i cell n26 i det aktiva kalkylbladet (Blad1). Därefter växlar koden till Blad2, där samma text skrivs in i cell n27.
I min modul1 finns en procedur som sparar arbetsboken:
Public Sub SaveAndGo()
ActiveWorkbook.Save
End Sub
Då jag kopplar en knapp på Blad1 till ovanstående procedur, och klickar på denna; blir resultatet att texten "Hjälp" hamnar i cell n26 och n27 på Blad1. Det görs alltså ingen växling till blad2. Det är som om raden "Sheets("Blad2").Select" hoppas över, bara för att arbetsboken sparas på ett annat sätt! Detta är en förenklad variant av mitt ursprungliga problem. Kan någon hjälpa mig förklara varför detta inträffar!
/StefanSv: Problem med Workbook_BeforeSave i Excel 2000
Sheets("Blad2").Range("n27").FormulaR1C1
istället. En annan (i regel bättre) variant är att döpa om cellerna.Sv: Problem med Workbook_BeforeSave i Excel 2000
Sv: Problem med Workbook_BeforeSave i Excel 2000
Om du visar koden som kan strula så kan vi hjälpa med den. Sv: Problem med Workbook_BeforeSave i Excel 2000
With DittFörstaSheet
'Kod
End With
With DittAndraSheet
'Kod
End With
With DittTredjeSheet
'Kod
End With
Select är inte så där jätteineffektivt, det är bara mycket mer svårhanterligt. Testa att sätta en breakpoint på select-raden, så kan du ju se om den verkligen inte körs. Det där kan krångla på så många sätt. Den kanske byter blad på fel sätt för att du har missat en detalj.Sv: Problem med Workbook_BeforeSave i Excel 2000