Ma se il file lo chiudi, come fai a dire che quella istruzione non viene eseguita???
Possiamo fare u ragionamento alla volta?
Moderatori: Anthony47, Flash30005
Flash30005 ha scritto:Leggi messaggio risolutivo di Anthony
Ma non capisco il concetto dell'utente
prima di chiudere vorresti posizionare il cursore in un certo punto del foglio, per fare cosa?
Immagino che la risposta sia per averlo già posizionato lì quando andrai a riaprirlo, giusto?
allora va bene anche in Open
se non è così non ha senso ciò che dici.
Anthony47 ha scritto:Ma se il file lo chiudi, come fai a dire che quella istruzione non viene eseguita???
Possiamo fare u ragionamento alla volta?
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Range("L1") = Time
Range("L1").select
End Sub
Worksheets("Foglio2").select
Range("A1")=Timer
Anthony47 ha scritto:DOPO tante insistenze ho provato, con questi risultati:
-le macro BeforeSave e BeforeClose NON eseguono alcuna Select
-quindi ad esempio una sequanza del tiposcriverebbe il Timer su A1 del foglio inizialmente attivo.
- Codice: Seleziona tutto
Worksheets("Foglio2").select
Range("A1")=Timer
Perche' avviene tutto cio' non lo so, ma sapendolo ci si puo' organizzare di conseguenza
Flash30005 ha scritto:Fai la select all'apertura perché è l'unica cosa logica che puoi fare
inutile, credo, ripetere il discorso precedente
riskismoney ha scritto:Niente di particolare, solo un riposizionamento del cursore.Private Sub Workbook_BeforeClose(Cancel As Boolean)
Worksheets("Foglio1").Range("day").Cells(Range("NrGiorni") + 1, 1).Select
Selection.Offset(0, 0).Select
MsgBox ("prova")
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Worksheets("Foglio1").Activate
Worksheets("Foglio1").Range("day").Cells(Range("NrGiorni") + 1, 1).Select
MsgBox ("prova")
End Sub
Anthony47 ha scritto:DOPO tante insistenze ho provato, con questi risultati:
-le macro BeforeSave e BeforeClose NON eseguono alcuna Select
-quindi ad esempio una sequanza del tiposcriverebbe il Timer su A1 del foglio inizialmente attivo.
- Codice: Seleziona tutto
Worksheets("Foglio2").select
Range("A1")=Timer
Perche' avviene tutto cio' non lo so, ma sapendolo ci si puo' organizzare di conseguenza
riskismoney ha scritto:No scossa, non è quello il problema.
Ciao
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Worksheets("Foglio1").Range("day").Cells(Range("NrGiorni") + 1, 1).Select
Selection.Offset(0, 0).Select
MsgBox (selection.parent.name & vbcrlf & selection.parent.parent.name)
End Sub
riskismoney ha scritto:Ottengo il nome del foglio e del file. Ma il cursore non si posiziona dove dovrebbe. Non so se hai letto il tutto ma in pratica nella BeforeClose funziona tutto tranne che la funzione select.
Ciao
Anthony47 ha scritto:Ciao scossa,
nella discussione ho scoperto due cose che non mi aspettavo:
-se comandi la chiusura di un file con Savechanges=True si attiva prima l' evento BeforeClose e poi BeforeSave
-nell' ambito di una BeforeClose o BeforeChange non funziona nessuna Select ne' Activate; nemmeno una Application.Goto
-addirittura se l' istruzione fosse sintatticamente sbagliata (tipo Sheets("AltroFoglio").Range("XY1").Select) l' errore non viene nemmeno rilevato, se siamo in un contesto di comandi vba (ripeto, tipo Workbooks("AltroFile.xls").Close Savechanges:=True).
Insomma e' la gestione del Workbook(Index).Save o Workbook(Index).Close Savechanges:=true che e' diversa dal normale Menu /File /Save.
Questo da prove fatte.
Ho trovato altre discussioni, anche sul forum Microsoft, dove si parla del problema; ma da nessuna parte ho finora trovato la spiegazione logica del fatto.
Sub ppp()
'ActiveWorkbook.Save
ActiveWorkbook.Close savechanges:=True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'NB: foglio attivo="GEN"
MsgBox Application.EnableEvents 'Aggiunta
Range("AD1") = Timer
'Sheets("MAR").Range("AA2").Select
Sheets("MAR").Activate
Range("AD2") = Timer
'Worksheets("MAR").Range("AZ1").Select
Application.Goto (Sheets("MAR").Range("AZ2"))
Range("AD3") = Timer
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
ActiveSheet.Range("AZ1").Activate
End Sub
Torna a Applicazioni Office Windows
Macro che scatta quando cambia dato in un altro file Autore: systemcrack |
Forum: Applicazioni Office Windows Risposte: 14 |
Problema con macro copia e rinomina file Autore: systemcrack |
Forum: Applicazioni Office Windows Risposte: 2 |
Macro che ricerca combinazioni che danno un valore Autore: kar64 |
Forum: Applicazioni Office Windows Risposte: 10 |
Macro che indica la riga prima della cella attiva Autore: systemcrack |
Forum: Applicazioni Office Windows Risposte: 19 |
Visitano il forum: Nessuno e 93 ospiti