29. juni 2005 - 10:57Der er
22 kommentarer og 1 løsning
Luk uden at gemme
Hej og god sommer til alle.
Jeg har et lille Excel spg.
Kan man få en projektmappe til at lade vær med at spørge om der skal gemmes, når den lukkes? Den skal bare lukkes bare og nærmest nulstiller dokumentet så de evt. ændringer der foretages ikke gemmes!
Det kan du godt. Det kræver lidt makrokode. Nu ved jeg ikke, hvor meget du kender til makroer, men så må du jo spørge. Under ThisWorkbook indsættes denne stump kode:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
b_hansen: Kender du noget til om kan evt. også kan fjerne menuer og lignende på den enkelte projektmappe? Skal nok lave et andet spg. med det, men ville lige hører
Gnutella> pudsigt du skulle spørge *S* Jeg sakser lige lidt mere fra samme fil. Det kræver, at du indsætter to gange kode i ThisWorkbook
Private Sub Workbook_Open() ' her testes for de menuer, som er benyttes, før Infosys laver om på tingene. menu1 = Application.CommandBars("Standard").Visible menu2 = Application.CommandBars("Formatting").Visible menu3 = Application.CommandBars("Picture").Visible menu4 = Application.CommandBars("Chart").Visible menu5 = Application.CommandBars("External Data").Visible menu6 = Application.CommandBars("Forms").Visible menu7 = Application.CommandBars("Control Toolbox").Visible menu8 = Application.CommandBars("Reviewing").Visible menu9 = Application.CommandBars("PivotTable").Visible menu10 = Application.CommandBars("Drawing").Visible menu11 = Application.CommandBars("Clipboard").Visible menu12 = Application.CommandBars("Visual Basic").Visible menu13 = Application.CommandBars("Web").Visible menu14 = Application.CommandBars("WordArt").Visible
' Her slås alle menuer fra, undtagen Standard If (Not menu1) Then Application.CommandBars("Standard").Visible = True If menu2 Then Application.CommandBars("Formatting").Visible = False If menu3 Then Application.CommandBars("Picture").Visible = False If menu4 Then Application.CommandBars("Chart").Visible = False If menu5 Then Application.CommandBars("External Data").Visible = False If menu6 Then Application.CommandBars("Forms").Visible = False If menu7 Then Application.CommandBars("Control Toolbox").Visible = False If menu8 Then Application.CommandBars("Reviewing").Visible = False If menu9 Then Application.CommandBars("PivotTable").Visible = False If menu10 Then Application.CommandBars("Drawing").Visible = False If menu11 Then Application.CommandBars("Clipboard").Visible = False If menu12 Then Application.CommandBars("Visual Basic").Visible = False If menu13 Then Application.CommandBars("Web").Visible = False If menu14 Then Application.CommandBars("WordArt").Visible = False
' Her testes om Formellinien, Statuslinien og fanebladene vises. Hvis det er tilfældet, skjules ' de formellinie = Application.DisplayFormulaBar statuslinie = Application.DisplayStatusBar faneblad = ActiveWindow.DisplayWorkbookTabs
If formellinie Then Application.DisplayFormulaBar = False If statuslinie Then Application.DisplayStatusBar = False If faneblad Then ActiveWindow.DisplayWorkbookTabs = False
' Her slås menuen til for Infosys. Denne menu bruges til at navigere rundt med Application.CommandBars("Menu til informationsystem").Visible = True menu1 = Application.CommandBars("Menu til informationsystem").Visible
' Her placeres cursoren på første side i celle A1. Herved starter man ved indgangsbilledet Sheets("Forside").Select Range("A1").Select
End Sub
OG:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
' Her slås menuen fra igen og slettes, før Infosys lukkes Application.CommandBars("Menu til informationsystem").Visible = False Application.CommandBars("Menu til informationsystem").Delete
' Her tilføjes de menuer, der var synlige før Infosys blev åbnet If (Not menu1) Then Application.CommandBars("Standard").Visible = False If menu2 Then Application.CommandBars("Formatting").Visible = True If menu3 Then Application.CommandBars("Picture").Visible = True If menu4 Then Application.CommandBars("Chart").Visible = True If menu5 Then Application.CommandBars("External Data").Visible = True If menu6 Then Application.CommandBars("Forms").Visible = True If menu7 Then Application.CommandBars("Control Toolbox").Visible = True If menu8 Then Application.CommandBars("Reviewing").Visible = True If menu9 Then Application.CommandBars("PivotTable").Visible = True If menu10 Then Application.CommandBars("Drawing").Visible = True If menu11 Then Application.CommandBars("Clipboard").Visible = True If menu12 Then Application.CommandBars("Visual Basic").Visible = True If menu13 Then Application.CommandBars("Web").Visible = True If menu14 Then Application.CommandBars("WordArt").Visible = True
' Her slås formellinien, statuslinien og fanebladene til igen, hvis de var synlige ' før Infosys blev startet If formellinie Then Application.DisplayFormulaBar = True If statuslinie Then Application.DisplayStatusBar = True If faneblad Then ActiveWindow.DisplayWorkbookTabs = True
"Menu til informationsystem" er en menu, jeg selv har lavet og tilføjet projektmappen. Den skal slettes, når mappen lukkes, ellers bliver den som standard liggende i Excel.
Hoooov..... mangler lige variabel-definitionen, som ligger øverst i Thisworkbook. Altså før den første makro
Public menu1 As Boolean Public menu2 As Boolean Public menu3 As Boolean Public menu4 As Boolean Public menu5 As Boolean Public menu6 As Boolean Public menu7 As Boolean Public menu8 As Boolean Public menu9 As Boolean Public menu10 As Boolean Public menu11 As Boolean Public menu12 As Boolean Public menu13 As Boolean Public menu14 As Boolean Public formellinie As Boolean Public statuslinie As Boolean Public faneblad As Boolean
Hmmm indsætter måske forkert... Jeg får denne fejl: Compile Error: Ambiguous name detectet: Workbook_BeforeClose
Her er som jeg har indsat det og skal sige er ingen haj til Macro:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Saved = True End Sub
Private Sub Workbook_Open() ' her testes for de menuer, som er benyttes, før Infosys laver om på tingene. menu1 = Application.CommandBars("Standard").Visible menu2 = Application.CommandBars("Formatting").Visible menu3 = Application.CommandBars("Picture").Visible menu4 = Application.CommandBars("Chart").Visible menu5 = Application.CommandBars("External Data").Visible menu6 = Application.CommandBars("Forms").Visible menu7 = Application.CommandBars("Control Toolbox").Visible menu8 = Application.CommandBars("Reviewing").Visible menu9 = Application.CommandBars("PivotTable").Visible menu10 = Application.CommandBars("Drawing").Visible menu11 = Application.CommandBars("Clipboard").Visible menu12 = Application.CommandBars("Visual Basic").Visible menu13 = Application.CommandBars("Web").Visible menu14 = Application.CommandBars("WordArt").Visible
' Her slås alle menuer fra, undtagen Standard If (Not menu1) Then Application.CommandBars("Standard").Visible = True If menu2 Then Application.CommandBars("Formatting").Visible = False If menu3 Then Application.CommandBars("Picture").Visible = False If menu4 Then Application.CommandBars("Chart").Visible = False If menu5 Then Application.CommandBars("External Data").Visible = False If menu6 Then Application.CommandBars("Forms").Visible = False If menu7 Then Application.CommandBars("Control Toolbox").Visible = False If menu8 Then Application.CommandBars("Reviewing").Visible = False If menu9 Then Application.CommandBars("PivotTable").Visible = False If menu10 Then Application.CommandBars("Drawing").Visible = False If menu11 Then Application.CommandBars("Clipboard").Visible = False If menu12 Then Application.CommandBars("Visual Basic").Visible = False If menu13 Then Application.CommandBars("Web").Visible = False If menu14 Then Application.CommandBars("WordArt").Visible = False
' Her testes om Formellinien, Statuslinien og fanebladene vises. Hvis det er tilfældet, skjules ' de formellinie = Application.DisplayFormulaBar statuslinie = Application.DisplayStatusBar faneblad = ActiveWindow.DisplayWorkbookTabs
If formellinie Then Application.DisplayFormulaBar = False If statuslinie Then Application.DisplayStatusBar = False If faneblad Then ActiveWindow.DisplayWorkbookTabs = False
' Her slås menuen til for Infosys. Denne menu bruges til at navigere rundt med Application.CommandBars("Menu til informationsystem").Visible = True menu1 = Application.CommandBars("Menu til informationsystem").Visible
' Her placeres cursoren på første side i celle A1. Herved starter man ved indgangsbilledet Sheets("Forside").Select Range("A1").Select
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
' Her slås menuen fra igen og slettes, før Infosys lukkes Application.CommandBars("Menu til informationsystem").Visible = False Application.CommandBars("Menu til informationsystem").Delete
' Her tilføjes de menuer, der var synlige før Infosys blev åbnet If (Not menu1) Then Application.CommandBars("Standard").Visible = False If menu2 Then Application.CommandBars("Formatting").Visible = True If menu3 Then Application.CommandBars("Picture").Visible = True If menu4 Then Application.CommandBars("Chart").Visible = True If menu5 Then Application.CommandBars("External Data").Visible = True If menu6 Then Application.CommandBars("Forms").Visible = True If menu7 Then Application.CommandBars("Control Toolbox").Visible = True If menu8 Then Application.CommandBars("Reviewing").Visible = True If menu9 Then Application.CommandBars("PivotTable").Visible = True If menu10 Then Application.CommandBars("Drawing").Visible = True If menu11 Then Application.CommandBars("Clipboard").Visible = True If menu12 Then Application.CommandBars("Visual Basic").Visible = True If menu13 Then Application.CommandBars("Web").Visible = True If menu14 Then Application.CommandBars("WordArt").Visible = True
' Her slås formellinien, statuslinien og fanebladene til igen, hvis de var synlige ' før Infosys blev startet If formellinie Then Application.DisplayFormulaBar = True If statuslinie Then Application.DisplayStatusBar = True If faneblad Then ActiveWindow.DisplayWorkbookTabs = True
Public menu1 As Boolean Public menu2 As Boolean Public menu3 As Boolean Public menu4 As Boolean Public menu5 As Boolean Public menu6 As Boolean Public menu7 As Boolean Public menu8 As Boolean Public menu9 As Boolean Public menu10 As Boolean Public menu11 As Boolean Public menu12 As Boolean Public menu13 As Boolean Public menu14 As Boolean Public formellinie As Boolean Public statuslinie As Boolean Public faneblad As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Saved = True End Sub
Private Sub Workbook_Open() ' her testes for de menuer, som er benyttes, før Infosys laver om på tingene. menu1 = Application.CommandBars("Standard").Visible menu2 = Application.CommandBars("Formatting").Visible menu3 = Application.CommandBars("Picture").Visible menu4 = Application.CommandBars("Chart").Visible menu5 = Application.CommandBars("External Data").Visible menu6 = Application.CommandBars("Forms").Visible menu7 = Application.CommandBars("Control Toolbox").Visible menu8 = Application.CommandBars("Reviewing").Visible menu9 = Application.CommandBars("PivotTable").Visible menu10 = Application.CommandBars("Drawing").Visible menu11 = Application.CommandBars("Clipboard").Visible menu12 = Application.CommandBars("Visual Basic").Visible menu13 = Application.CommandBars("Web").Visible menu14 = Application.CommandBars("WordArt").Visible
' Her slås alle menuer fra, undtagen Standard If (Not menu1) Then Application.CommandBars("Standard").Visible = True If menu2 Then Application.CommandBars("Formatting").Visible = False If menu3 Then Application.CommandBars("Picture").Visible = False If menu4 Then Application.CommandBars("Chart").Visible = False If menu5 Then Application.CommandBars("External Data").Visible = False If menu6 Then Application.CommandBars("Forms").Visible = False If menu7 Then Application.CommandBars("Control Toolbox").Visible = False If menu8 Then Application.CommandBars("Reviewing").Visible = False If menu9 Then Application.CommandBars("PivotTable").Visible = False If menu10 Then Application.CommandBars("Drawing").Visible = False If menu11 Then Application.CommandBars("Clipboard").Visible = False If menu12 Then Application.CommandBars("Visual Basic").Visible = False If menu13 Then Application.CommandBars("Web").Visible = False If menu14 Then Application.CommandBars("WordArt").Visible = False
' Her testes om Formellinien, Statuslinien og fanebladene vises. Hvis det er tilfældet, skjules ' de formellinie = Application.DisplayFormulaBar statuslinie = Application.DisplayStatusBar faneblad = ActiveWindow.DisplayWorkbookTabs
If formellinie Then Application.DisplayFormulaBar = False If statuslinie Then Application.DisplayStatusBar = False If faneblad Then ActiveWindow.DisplayWorkbookTabs = False
' Her placeres cursoren på første side i celle A1. Herved starter man ved indgangsbilledet Sheets("Computere").Select Range("A1").Select
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
' Her tilføjes de menuer, der var synlige før Infosys blev åbnet If (Not menu1) Then Application.CommandBars("Standard").Visible = False If menu2 Then Application.CommandBars("Formatting").Visible = True If menu3 Then Application.CommandBars("Picture").Visible = True If menu4 Then Application.CommandBars("Chart").Visible = True If menu5 Then Application.CommandBars("External Data").Visible = True If menu6 Then Application.CommandBars("Forms").Visible = True If menu7 Then Application.CommandBars("Control Toolbox").Visible = True If menu8 Then Application.CommandBars("Reviewing").Visible = True If menu9 Then Application.CommandBars("PivotTable").Visible = True If menu10 Then Application.CommandBars("Drawing").Visible = True If menu11 Then Application.CommandBars("Clipboard").Visible = True If menu12 Then Application.CommandBars("Visual Basic").Visible = True If menu13 Then Application.CommandBars("Web").Visible = True If menu14 Then Application.CommandBars("WordArt").Visible = True
' Her slås formellinien, statuslinien og fanebladene til igen, hvis de var synlige ' før Infosys blev startet If formellinie Then Application.DisplayFormulaBar = True If statuslinie Then Application.DisplayStatusBar = True If faneblad Then ActiveWindow.DisplayWorkbookTabs = True
Ok, det er fordi, du definerer samme procedure to gange, nemlig Workbook_BeforeClose(Cancel As Boolean)
Skift i stedet (hele) koden ud med:
Public menu1 As Boolean Public menu2 As Boolean Public menu3 As Boolean Public menu4 As Boolean Public menu5 As Boolean Public menu6 As Boolean Public menu7 As Boolean Public menu8 As Boolean Public menu9 As Boolean Public menu10 As Boolean Public menu11 As Boolean Public menu12 As Boolean Public menu13 As Boolean Public menu14 As Boolean Public formellinie As Boolean Public statuslinie As Boolean Public faneblad As Boolean
Private Sub Workbook_Open() ' her testes for de menuer, som er benyttes, før Infosys laver om på tingene. menu1 = Application.CommandBars("Standard").Visible menu2 = Application.CommandBars("Formatting").Visible menu3 = Application.CommandBars("Picture").Visible menu4 = Application.CommandBars("Chart").Visible menu5 = Application.CommandBars("External Data").Visible menu6 = Application.CommandBars("Forms").Visible menu7 = Application.CommandBars("Control Toolbox").Visible menu8 = Application.CommandBars("Reviewing").Visible menu9 = Application.CommandBars("PivotTable").Visible menu10 = Application.CommandBars("Drawing").Visible menu11 = Application.CommandBars("Clipboard").Visible menu12 = Application.CommandBars("Visual Basic").Visible menu13 = Application.CommandBars("Web").Visible menu14 = Application.CommandBars("WordArt").Visible
' Her slås alle menuer fra, undtagen Standard If (Not menu1) Then Application.CommandBars("Standard").Visible = True If menu2 Then Application.CommandBars("Formatting").Visible = False If menu3 Then Application.CommandBars("Picture").Visible = False If menu4 Then Application.CommandBars("Chart").Visible = False If menu5 Then Application.CommandBars("External Data").Visible = False If menu6 Then Application.CommandBars("Forms").Visible = False If menu7 Then Application.CommandBars("Control Toolbox").Visible = False If menu8 Then Application.CommandBars("Reviewing").Visible = False If menu9 Then Application.CommandBars("PivotTable").Visible = False If menu10 Then Application.CommandBars("Drawing").Visible = False If menu11 Then Application.CommandBars("Clipboard").Visible = False If menu12 Then Application.CommandBars("Visual Basic").Visible = False If menu13 Then Application.CommandBars("Web").Visible = False If menu14 Then Application.CommandBars("WordArt").Visible = False
' Her testes om Formellinien, Statuslinien og fanebladene vises. Hvis det er tilfældet, skjules ' de formellinie = Application.DisplayFormulaBar statuslinie = Application.DisplayStatusBar faneblad = ActiveWindow.DisplayWorkbookTabs
If formellinie Then Application.DisplayFormulaBar = False If statuslinie Then Application.DisplayStatusBar = False If faneblad Then ActiveWindow.DisplayWorkbookTabs = False
' Her slås menuen til for Infosys. Denne menu bruges til at navigere rundt med Application.CommandBars("Menu til informationsystem").Visible = True menu1 = Application.CommandBars("Menu til informationsystem").Visible
' Her placeres cursoren på første side i celle A1. Herved starter man ved indgangsbilledet Sheets("Forside").Select Range("A1").Select
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
' Her slås menuen fra igen og slettes, før Infosys lukkes Application.CommandBars("Menu til informationsystem").Visible = False Application.CommandBars("Menu til informationsystem").Delete
' Her tilføjes de menuer, der var synlige før Infosys blev åbnet If (Not menu1) Then Application.CommandBars("Standard").Visible = False If menu2 Then Application.CommandBars("Formatting").Visible = True If menu3 Then Application.CommandBars("Picture").Visible = True If menu4 Then Application.CommandBars("Chart").Visible = True If menu5 Then Application.CommandBars("External Data").Visible = True If menu6 Then Application.CommandBars("Forms").Visible = True If menu7 Then Application.CommandBars("Control Toolbox").Visible = True If menu8 Then Application.CommandBars("Reviewing").Visible = True If menu9 Then Application.CommandBars("PivotTable").Visible = True If menu10 Then Application.CommandBars("Drawing").Visible = True If menu11 Then Application.CommandBars("Clipboard").Visible = True If menu12 Then Application.CommandBars("Visual Basic").Visible = True If menu13 Then Application.CommandBars("Web").Visible = True If menu14 Then Application.CommandBars("WordArt").Visible = True
' Her slås formellinien, statuslinien og fanebladene til igen, hvis de var synlige ' før Infosys blev startet If formellinie Then Application.DisplayFormulaBar = True If statuslinie Then Application.DisplayStatusBar = True If faneblad Then ActiveWindow.DisplayWorkbookTabs = True
Du skal givetvis slette de linier, der henviser til "Menu til informationsystem", da du ikke har denne menu (både i Workbook_open og Workbook_beforeclose)
I workbook_open bør du også slette følgende 3 linier: ' Her placeres cursoren på første side i celle A1. Herved starter man ved indgangsbilledet Sheets("Forside").Select Range("A1").Select
De skifter nemlig til fanebladet Forside, som du ikke har.
Perfekt! Bare lige en lille ting, har selv lige prøvet og forsøgt, men kan ikke lige greje den. Jeg vil gerne have standard væk og statuslinien ind. Den er nemlig opbygget af flere ark :-)
Pleaaaasseee
Kan jeg gi dig flere point nu hvor den er besvaret?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.