assegnare variabile vba tramite cercavert



  • assegnare variabile vba tramite cerca.vert
    di ritz75 (utente non iscritto) data: 02/05/2016 20:23:43

    Buonasera a tutti.

    Vi scrivo per un aiuto. Cercherò di essere il più chiaro possibile pur sapendo che ciò che sto cercando di fare non è semplicissimo (almeno per me che non sono un esperto VBA) nè da fare nè da spiegare e non so nemmeno se sia possibile....

    Devo scrivere il valore/stringa "pippo" in una cella (ad esempio in cella B5 del foglio xls allegato) tramite una macro (chiaramente semplifico una parte di una macro più complessa che sono riuscito a compilare, parte sulla quale mi sto arenando).

    Per identificare la cella in cui scrivere il valore "pippo" voglio fare riferimento al comando .cells(riga, colonna).... nel caso di cella B5.... .cells(5, 2)
    Supponiamo che r = riga e c = colonna..... Ora provo a descrivere la complicazione (per non definirla peggio)....

    Vorrei definire la variabile r come cerca.verticale (o funzione vba simile) del valore X in un elenco. Allo stesso modo per la variabile c come cerca.verticale del valore X in un elenco. Come potete verificare dalla tabella seguente, X descrive le coordinate di riga e colonna in cui andrò a scrivere pippo (allego il file se può servire (la tabella si trova in G1:I4)

    valore riga colonna
    X 5 2
    Y 6 2
    Z 7 2

    In pratica per poter scrivere in B5 la parola "pippo" vorrei sottoporre un codice del genere (scusate ma lo scrivo in excel visto che VBA non mi è ancora familiarissimo...):

    r = cerca.vert("X";G1:I4;2;0) <-- definizione della variabile che in VBA è fatta con vlookup( al posto di cerca.vert
    c = cerca.vert("X";G1:I4;3;0) <-- definizione della variabile che in VBA è fatta con vlookup( al posto di cerca.vert
    .cells(r, c).select

    In questo modo se volessi scrivere pippo in B6 anzichè in B6 mi basterebbe sostituire nel cerca.vert alla X la Y senza dover andare a ridefinire le celle in cui pescare i riferimenti di riga e colonna.

    E' complicato da spiegare lo so....e mi scuso se ci ho messo anche del mio nel non essere sufficientemente chiaro.
    Per sintetizzare... la definizione del valore da assegnare ad una variabile che poi verrà utilizzata come riferimenti di cella in una macro, può essere effettuata tramite un cerca verticale da un elenco debitamente preparato? Se si quale è l'istruzione corretta?

    Purtroppo non sono minimamente in grado di sottoporvi un mio codice scritto perchè non trovo modo per definire la variabile in maniera funzionante.... vi allego l'excel per esemplificare quanto ho cercato di descrivere.

    Grazie per i contributi



  • di Mister_x (utente non iscritto) data: 03/05/2016 00:37:58

    ciao

    spiegazione ???????

    comunque approccio di sub() per capire il problema
    da inserire nel modulo del foglio
    in base ai tuoi dati , di cui non ho capito niente

    ciao
     
    Option Explicit
    Sub assegnaVal()
    Dim i As Long
    For i = 2 To 4
     If Cells(i, "G") = "X" Then
      Cells(Cells(i, "H").Value, Cells(i, "I").Value) = "Pippo"
     End If
     If Cells(i, "G") = "Y" Then
      Cells(Cells(i, "H").Value, Cells(i, "I").Value) = "Pluto"
     End If
     If Cells(i, "G") = "Z" Then
      Cells(Cells(i, "H").Value, Cells(i, "I").Value) = "Paperino"
     End If
    Next i
    End Sub