› Sviluppare funzionalita su Microsoft Office con VBA › errore se foglio è nascosto
-
AutoreArticoli
-
buongiorno
ho un problema con qst codice che mi inserisce un ID in una tabella da userform.
ma mi da errore se il foglio "aa" è nascosto
come posso risolvere.
graziee
Private Sub CommandButton1_Click() Dim tabella As Range Application.ScreenUpdating = False Sheets("aa").Select Dim iRow As Integer iRow = 2 While Cells(iRow, 1).Value <> "" iRow = iRow + 1 Wendse non lo selezione, mi inserisce ID nel foglio dove c'è il pulsante..mentre me lo deve inserire nel goglio "aa" dove c'è la tabella!
Ciao
Basta identificare la cella o il range con il foglio
Sheets("aa").Cells(....)
oppureSheets("aa").Range(....)
se hai tante istruzioni puoi usare with
with Sheets("aa")
.cells(...)
.range(....)
end with
non funziona.
qst è il codice. e funziona solo se il foglio aa non è nascosto..
Private Sub CommandButton1_Click() Dim tabella As Range Dim iRow As Integer Application.ScreenUpdating = False Sheets("aa").Select 'si seleziona un'altro foglio iRow = 2 While Cells(iRow, 1).Value <> "" iRow = iRow + 1 Wend With Foglio9 Set tabella = Range(.Range("B1"), .Cells(.Rows.Count, 2).End(xlUp).Offset(0, 18)) End With Dim record As Range If Me.CommandButton1.Caption = "AGGIUNGI VOCE" Then Set record = tabella.Rows(tabella.Rows.Count).Offset(1, 0) Else Set record = tabella.Rows(Me.nominativo.ListIndex + 1) End If With record Cells(iRow, 1) = Cells(iRow, 1).Offset(-1, 0) + 1 .Cells(1) = Me.qualifica .Cells(2) = Me.NOME.Text .Cells(3) = Me.destinazione .Cells(4) = Me.data .Cells(5) = Me.dataal End With MsgBox ("Dati inseriti correttamente.") Sheets("TURNI").Select Range("A1").Select Unload Me End SubCerca sempre di NON usare Select, è una pessima abitudine suggerita dal Registratore
se non lo seleziono il foglio "aa" mi inserisce id nel foglio dove c'è il pulsante e non in "aa" dove c'è tabella
se si nasconde il foglio "a" da errore"
se elimino la parte di codice
Application.ScreenUpdating = False Sheets("a").Select
mi inserisce ID nel foglio del pulsante
Allegati:
You must be logged in to view attached files.Ciao
Come già detto, NON è necessario usare .Select
Nascondi il Foglio("A") e sostituisci la tua macro con questa
Private Sub CommandButton1_Click() Application.ScreenUpdating = False 'Sheets("A").Select 'si seleziona un'altro foglio Dim iRow As Long 'riga e colonna SEMPRE Long e non Integer, per evitare blocco) iRow = 2 While Sheets("A").Cells(iRow, 1).Value <> "" iRow = iRow + 1 Wend With Sheets("A") .Cells(iRow, 1) = Cells(iRow, 1).Offset(-1, 0) + 1 .Cells(iRow, 2) = Textnome.Text .Cells(iRow, 3) = Textdestinazione.Text .Cells(iRow, 4) = TextdataDAL .Cells(iRow, 5) = TextDATAAL End With Unload Me Application.ScreenUpdating = True End SubHo anche aggiunto il ripristino dell'Updating
Fai sapere. Ciao,
Mario
Applicandolo a qst codice non va..mi continua a dare sempre il numero dell'ID sul foglio dove c'è il pulsante
Private Sub CommandButton1_Click() Dim tabella As Range Dim iRow As Integer Application.ScreenUpdating = False Sheets("DISCONTINUI").Select 'si seleziona un'altro foglio iRow = 2 While Cells(iRow, 1).Value <> "" iRow = iRow + 1 Wend With Foglio9 Set tabella = Range(.Range("B1"), .Cells(.Rows.Count, 2).End(xlUp).Offset(0, 18)) End With Dim record As Range If Me.CommandButton1.Caption = "AGGIUNGI VOCE" Then Set record = tabella.Rows(tabella.Rows.Count).Offset(1, 0) Else Set record = tabella.Rows(Me.nominativo.ListIndex + 1) End If With record Cells(iRow, 1) = Cells(iRow, 1).Offset(-1, 0) + 1 .Cells(1) = Me.qualifica .Cells(2) = Me.NOME.Text .Cells(3) = Me.destinazione .Cells(4) = Me.data .Cells(5) = Me.dataal End With MsgBox ("Dati inseriti correttamente.") Sheets("TURNI").Select Range("A1").Select Unload Me End SubCiao
Se applichi la macro che t'ho aggiustato io, vedrai che funziona anche col Foglio nascosto.
Se, invece, continui a perseverare negli errori, beh non so che dirti.
Nota due cose:
nella mia macro il Foglio("A") NON E' SELEZIONATO però, ovviamente, devo dire ad Excel dove andare a scriverlo ed infatti ho creato With Sheets("A") .... End With al cui interno ho indicato le celle nella quali è da scrivere il valore. Dette celle DEVONO essere precedute da un punto ( . )
E' chiaro adesso?
Confronta le due macro è nota dove sono le differenze.
Ciao,
Mario
Private Sub CommandButton1_Click() Dim tabella As Range Application.ScreenUpdating = False Dim iRow As Long iRow = 2 While Sheets("A").Cells(iRow, 1).Value <> "" iRow = iRow + 1 Wend With Sheets("A") Set tabella = Range(.Range("B1"), .Cells(.Rows.Count, 2).End(xlUp).Offset(0, 18)) End With Dim record As Range If Me.CommandButton1.Caption = "AGGIUNGI VOCE" Then Set record = tabella.Rows(tabella.Rows.Count).Offset(1, 0) Else Set record = tabella.Rows(Me.nominativo.ListIndex + 1) End If With Sheets("A") .Cells(iRow, 1) = Cells(iRow, 1).Offset(-1, 0) + 1 .Cells(2) = Me.qualifica .Cells(3) = Me.NOME.Text .Cells(4) = Me.destinazione .Cells(5) = Me.data .Cells(6) = Me.dataal End With MsgBox ("Dati inseriti correttamente.") Sheets("TURNI").Select Range("A1").Select Unload Me End Subho modificato il codice. l'unico problema è che ho dovuto mantenere il set tabella..
in ogni caso mi inserisce i dati nella riga 1 (quando invece deve partire dalla 2° riga) e l'ID nella riga sottostante
buon pomeriggio..
allora premesso che sto impazzendo..
non riesco a combinare il codice che mi hai suggerito, perchè ho inserito una chekbox e non mi funziona con il tuo codice..(nel senso che mi da vero o falso, mentre dovrebbe restituirmi "AUT" o "")
detto questo, non rieco a far funzionare il tutto se il foglio è nascosto.
vi allego il file.. ditemi che pasticcio ho fatto!!!
Allegati:
You must be logged in to view attached files. -
AutoreArticoli
