Cerca verticale dinamico in codice VBA

Anonimo
2023-03-24T15:17:07+00:00

Ciao a tutti,
ritorno a chiedere il Vostro aiuto!
E' possibile nella funzione Cerca.Vert passare in modo dinamico il valore che si trova 3 celle a sx della medesima riga nel codice sottostante?

Dim lRow As Long

    lRow = Range("A" & Cells.Rows.Count).End(xlUp).Row  

    Range("A" & lRow).Offset(2, 0).Value = "Titolo:" 

    Range("A" & lRow).Offset(2, 2).Value = UCase(UserForm2.ComboBox1.Value) 

    Range("A" & lRow).Offset(2, 5).Value = **"=CERCA.VERT(xxxxxxx;Tab\_FDF;2;FALSO)"** 

    With Range("A" & lRow).Offset(2, 0).Resize(1, 3) 

        .Font.Name = "Calibri" 

        .Font.Bold = True 

        .Font.Size = 12 

    End With 

End Sub

Grazie e ciao
Giovanni

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Eleuterio Tedeschi 18,750 Punti di reputazione Moderatore volontario
2023-03-24T22:34:25+00:00

Sempre tante grazie!
Ho questo messaggio di errore:

Errore di run-time 1004.

Errore definito dall'applicazione o dall'oggetto.

Range("A" & lRow).Offset(2, 4).Formula = "=VLOOKUP(" & UserForm2.ComboBox1.Value & ";Tab_FDF;2;0)"

Per contro
'Range("A" & lRow).Offset(2, 4).Value = Application.VLookup(UserForm2.ComboBox1.Value, Range("Tab_FDF"), 2, 0
funziona!

Un saluto e buon fine settimana,
Giovanni

Prova a modificare la formula:

Range("A" & lRow).Offset(2, 4).Formula = "=VLOOKUP(" & UserForm2.ComboBox1.Value & ",Tab_FDF,2,0)"

Ciao.

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

4 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2023-03-24T20:43:40+00:00

    Sempre tante grazie!
    Ho questo messaggio di errore:

    Errore di run-time 1004.

    Errore definito dall'applicazione o dall'oggetto.

    Range("A" & lRow).Offset(2, 4).Formula = "=VLOOKUP(" & UserForm2.ComboBox1.Value & ";Tab_FDF;2;0)"

    Per contro
    'Range("A" & lRow).Offset(2, 4).Value = Application.VLookup(UserForm2.ComboBox1.Value, Range("Tab_FDF"), 2, 0
    funziona!

    Un saluto e buon fine settimana,
    Giovanni

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Eleuterio Tedeschi 18,750 Punti di reputazione Moderatore volontario
    2023-03-24T18:57:47+00:00

    Grazie per la risposta.
    "cosacercare" è il valore del -3 celle a sx e cambia di volta, ovvero quello che inserisco con:
    Range("A" & lRow).Offset(2, 2).Value = UCase(UserForm2.ComboBox1.Value)

    La proposta 1 è quella che vorrei usare in quanto il valore in Tab_Fdf è dinamico.... Range("A" & lRow).Offset(2, 4).Formula = "=CERCA.VERT("UserForm2.ComboBox1.Value";Tab_FDF;2;0)"

    ma non riesco a scrivere correttamente la sintassi anche se ho provato varie possibilità.

    Grazie per l'eventuale ulteriore aiuto.
    Saluti
    Giovanni

    Ci sono due errori:

    Range("A" & lRow).Offset(2, 4).Formula = "=CERCA.VERT("UserForm2.ComboBox1.Value";Tab_FDF;2;0)"

    correggi così

    Range("A" & lRow).Offset(2, 4).Formula = "=VLOOKUP(" & UserForm2.ComboBox1.Value & ";Tab_FDF;2;0)"

    non modificare il nome della formula in inglese, perché usando Formula e non FormulaLocal va scritta in inglese.

    Ciao.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2023-03-24T18:12:37+00:00

    Grazie per la risposta.
    "cosacercare" è il valore del -3 celle a sx e cambia di volta, ovvero quello che inserisco con:
    Range("A" & lRow).Offset(2, 2).Value = UCase(UserForm2.ComboBox1.Value)

    La proposta 1 è quella che vorrei usare in quanto il valore in Tab_Fdf è dinamico....
    Range("A" & lRow).Offset(2, 4).Formula = "=CERCA.VERT("UserForm2.ComboBox1.Value";Tab_FDF;2;0)"

    ma non riesco a scrivere correttamente la sintassi anche se ho provato varie possibilità.

    Grazie per l'eventuale ulteriore aiuto.
    Saluti
    Giovanni

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Eleuterio Tedeschi 18,750 Punti di reputazione Moderatore volontario
    2023-03-24T15:49:45+00:00

    Ciao a tutti,
    ritorno a chiedere il Vostro aiuto!
    E' possibile nella funzione Cerca.Vert passare in modo dinamico il valore che si trova 3 celle a sx della medesima riga nel codice sottostante?

    Dim lRow As Long

    lRow = Range("A" & Cells.Rows.Count).End(xlUp).Row

    Range("A" & lRow).Offset(2, 0).Value = "Titolo:"

    Range("A" & lRow).Offset(2, 2).Value = UCase(UserForm2.ComboBox1.Value)

    Range("A" & lRow).Offset(2, 5).Value = "=CERCA.VERT(xxxxxxx;Tab_FDF;2;FALSO)"

    With Range("A" & lRow).Offset(2, 0).Resize(1, 3)

    .Font.Name = "Calibri"

    .Font.Bold = True

    .Font.Size = 12

    End With

    End Sub

    Immagine

    Grazie e ciao
    Giovanni

    Dipende se vuoi lasciare dinamica la cella con la formula o se vuoi attribuirle solo il valore, per cui ti prospetto i due casi:

    1. Range("A" & lRow).Offset(2, 5).Formula = "=VLOOKUP(" & cosacercare & ";Tab_FDF;2;0)"
    2. Range("A" & lRow).Offset(2, 5).Value = Application.VLookUp(cosacercare, Range("Tab_FDF"), 2, 0)

    senza il foglio devi sicuramente adattare i suggerimenti e magari aggiungere qualche controllo errori,

    ciao.

    La risposta è stata utile?

    0 commenti Nessun commento