› Sviluppare funzionalita su Microsoft Office con VBA › Problema IF in ciclo FOR
-
AutoreArticoli
-
Egregi,
sto provando ad utilizzare un codice di questo tipo non funziona.
Il stringa IF genera l'errore "errore definito dall'applicazione o dall'oggetto"
Dim i As Integer
N_A = Firme_EHS.TextBox1
For i = 14 To 50
If Worksheets("AVVISIehs").Cells(i, 1) = N_A Then
Worksheets("AVVISIehs").Cells(i, 4).Value = Worksheets("Agenda_5m").Cells(74, 16).Value
Worksheets("AVVISIehs").Cells(i, 5).Value = Worksheets("Agenda_5m").Cells(76, 16).Value
Worksheets("AVVISIehs").Cells(i, 6).Value = Worksheets("Agenda_5m").Cells(78, 16).Value
Worksheets("FIRMEehs").Cells(i, 7).Value = Worksheets("Agenda_5m").Cells(80, 16).Value
Worksheets("FIRMEehs").Cells(i, 8).Value = Worksheets("Agenda_5m").Cells(82, 16).Value
Worksheets("FIRMEehs").Cells(i, 9).Value = Worksheets("Agenda_5m").Cells(84, 16).Value
Worksheets("FIRMEehs").Cells(i, 10).Value = Worksheets("Agenda_5m").Cells(86, 16).Value
End If
Next
Unload Me
Il vero problema è che il codice pressoché uguale al seguente, che funziona perfettamente nello stesso workbook:
For i = 2 To 60
If Application.WorksheetFunction.WeekNum(Date) = Cells(i, 1).Value Then
Cells(i, 3).Value = Firme_APSYS.ListBox2.List
Cells(i, 4).Value = Firme_APSYS.ListBox4.List
Cells(i, 5).Value = Firme_APSYS.ListBox6.List
Cells(i, 6).Value = Firme_APSYS.ListBox8.List
Cells(i, 7).Value = Firme_APSYS.ListBox10.List
Cells(i, 8).Value = Firme_APSYS.ListBox12.List
Cells(i, 9).Value = Firme_APSYS.ListBox14.List
Cells(i, 10).Value = Firme_APSYS.ListBox16.List
Cells(i, 11).Value = Firme_APSYS.ListBox18.List
Cells(i, 12).Value = Firme_APSYS.ListBox20.List
End If
Next i
Grazie a tutti quelli che mi aiuteranno.
L'intoppo nasce proprio sul primo IF: la condizione non viene riconosciuta come vera. Infatti, ho provato ad inserire un generico ELSE e, infatti, il codice esegue l'ELSE per ogni iterazione del ciclo FOR.
Marzio
ciao
forse il problema sta che tu stai confrontando una cella numerica con un testo
Worksheets("AVVISIehs").Cells(i, 1) = N_A Then
N_A = Firme_EHS.TextBox1
se in cells(i,1) ai un valore tipo 1,2,3 ecc e in Textbox1 inserisci un valore tipo 1,2,3 ma e' testo prova
a mettere un semplice *1
N_A = Firme_EHS.TextBox1 * 1
invece se in cells(i,1 ) ai una data e tu scrivi una data 03/12/2019, questa e' testo, devi fare la conversione con DateValue() vedi help in linea
ciao
Ciao,
se utilizzo il codice
For i = i To 18
If ActiveSheet.Range("A14").Value = N_A Then
MsgBox "Ciao"
Funziona perfettamente.
Il problema dunque è l'impiego della
i
e del cicloFOR
Cosa sbaglio?
ciao
a questo punto servirebbe un tuo file con inserita gia' la macro e senza dati sensibili, per avere un quadro di cosa e' e cosa si puo' fare, con un minimo di spiegazione di cosa fa questa
ciao
ciao a tutti,
ed un saluto a MisterX.
Il stringa IF genera l'errore "errore definito dall'applicazione o dall'oggetto"
senza file come ha consigliato MisterX,
a me viene il dubbio che il foglio Worksheets("AVVISIehs") non sia presente nel file o abbia un nome scritto diversamente,
che è come la stessa cosa.
ciao
Frank
Ragazzi in effetti, provando a far lavorare il codice su un nuovo foglio...
Beh, funziona.
Giusto per mia cultura personale, credete che il problema possa essere stato di "nome" o presenzA di elementi di disturbo nel foglio? Che ne so, celle unite etc.
Giusto per mia cultura personale, credete che il problema possa essere stato di "nome" o presenzA di elementi di disturbo nel foglio? Che ne so, celle unite etc.
vedendo il file una risposta esaustiva sarebbe stata possibile, senza.......
ti rimane la cultura.
Personale, come il file.
Ciao
Frank
-
AutoreArticoli