assegnare valore variabili



  • assegnare valore variabili
    di ritz75 (utente non iscritto) data: 03/05/2016 11:00:15

    Ripropongo il tema visto che un mio precedente chiarimento non è andato a buon fine....
    La macro sotto riportata scrive "ciao" nella cella definita dalle coordinate di riga/colonn (nell'esempio: 3,4).
    La mia esigenza è di rendere variabili le coordinate di riga e colonna, definendole tramite un cerca verticale di un riferimento in una tabella che contiene i valori di riga e di colonna (si veda il file di esempio).
    Per capirci, se possibile, vorrei definire riga = cerca.vert.... e alla stessa maniera per la colonna.
    In questo modo potrei impostare la cella in cui andrò a scrivere la parola "ciao" in base ad un riferimento definito nella tabella di ricerca; non dovrò pertanto andare a definire di volta in volta le possibili coordinate dove andare in scrittura ma automatizzerò il tutto.
    Nel file allegato ho cercato di esemplificare il caso.
    Grazie a chi mi potrà dare una mano.


     
    Sub macro_cella()
        riga = 3
        colonna = 4
        With ActiveSheet
             .Cells(riga, colonna).Select
             ActiveCell.FormulaR1C1 = "ciao"
        End With
    End Sub



  • di alfrimpa data: 03/05/2016 11:25:07

    Ciao Ritz

    Il file non si riesce a scaricare: c'è una cartella con tanti file.

    Riallega solo quello

    Alfredo





  • di Luca73 data: 03/05/2016 11:38:11

    A me scarica un file zippato vuoto...
    Ciao
    Luca





  • di ritz75 (utente non iscritto) data: 03/05/2016 11:39:29

    Ciao Luca
    Grazie per l'informazione.
    Ho riallegato il .zip come esempio corretto.zip



  • di alfrimpa data: 03/05/2016 11:39:37

    anche a me.

    E poi perché hai aperto un'altra discussione quando ne avevi già una in corso alla quale ti ha anche risposto Mister_X?

    Alfredo





  • di Luca73 data: 03/05/2016 11:40:38

    Ciao Con l'esempio ora capisco il problema. la soluzione secondo me dipende da quanti dati vuoi analizzare ovvero da quante righe è composta la tabella variabili riga / colonna

    Ciao
    Luca





  • di Luca73 data: 03/05/2016 11:57:38

    IO farei una cosa del genere.
    Ormai l'ho fatta e la posto.
    ma concordo con Alfredo che l'approccio non è corretto.

    Saluti
     
    Sub macro_cella_Luca()
    Dim Riga
    Dim Colonna
    Dim Selezione
    Dim CellaW
    Dim Index
    
    Selezione = Range("F8")
    For Index = 3 To 7 Step 2
        Cells(Index, 4).ClearContents
    Next
    Riga = 0
    Colonna = 0
    For Each CellaW In Range("F3:F5")
        If CellaW = Selezione Then
            Riga = CellaW.Offset(0, 1)
            Colonna = CellaW.Offset(0, 2)
        End If
    Next CellaW
    If Riga <> 0 Then
        With ActiveSheet
             .Cells(Riga, Colonna).FormulaR1C1 = "ciao"
        End With
    Else
        MsgBox "Valore NON VALIDO", vbCritical + vbOKOnly, "ATTENZIONE"
    End If
    
    End Sub
    






  • di ritz75 (utente non iscritto) data: 03/05/2016 12:16:41

    ho riproposto l'argomento perchè avevo avuto dei problemi con la pubblicazione... non è mio uso andare contro le regole dei forum... e chiedo scusa se ho infranto involontariamente qualche regola.

    Grazie a Luca per l'aiuto. Ora provo e vi so dire




  • di ritz75 (utente non iscritto) data: 04/05/2016 17:36:09

    Mi scuso se ho postato due volte l'argomento ma una mia prima risposta non era stata pubblicata non so per quale motivo (devo aver sbagliato qualcosa). Nel dubbio ho aperto un nuovo post. Mi scuso nuovamente... sapendo come funzionano i forum so che non si deve fare.

    Ringrazio luca per la macro. Con la sua macro mi ha dato un ottimo spunto per riuscire a gestire ciò che mi serviva. Per utilità di tutti posto il codice VBA che ho creato (ovviamente i miglioramenti sono ben accetti).

    l'unica cosa che non ho capito della macro di Luca è questa parte....

    For Index = 3 To 7 Step 2
    Cells(Index, 4).ClearContents
    Next

    qualcuno mi aiuta a capire il significato del passaggio?
     
    Sub macro_cella()
    
    Dim Riga
    Dim Colonna
    'Dim Selezione
    Dim CellaW
    'Dim Index
    
    Selezione = "z"
    'For Index = 3 To 7 Step 2
    '    Cells(Index, 4).ClearContents
    'Next
    'Riga = 0
    'Colonna = 0
    For Each CellaW In Range(Cells(4, 3), Cells(6, 3))
        If CellaW = Selezione Then
            Riga = CellaW.Offset(0, 1)
            Colonna = CellaW.Offset(0, 2)
        End If
    Next CellaW
    Cells(Riga, Colonna) = "ciao"
    
    End Sub



  • di alfrimpa data: 04/05/2016 17:44:52

    Ciao

    Con quel ciclo viene cancellato il contenuto delle celle D3, D5 e D7.

    Alfredo





  • di Luca73 data: 05/05/2016 08:33:10

    Grazie Alfredo.
    quel ciclo serve per cancellare i valori altrimenti aggiungerebbe sempre e solo dei ciao senza togliere in precedenti.

    Secodo me però per una casistica così limitatata io avrei fatto tutto in excel enza scomodare VBA....
    Ciao
    Luca





  • di ritz75 (utente non iscritto) data: 05/05/2016 09:13:38

    nell'esempio proposto non ha senso scomodare vba, d'accordo.... ma l'esempio inviato era solo una semplificazione di una casistica molto più complessa.... devo gestire molte più variabili all'interno di una procedura complicata gestibile solo con una programmazione vba

    grazie per i contributi!!!



  • di Cucù data: 05/05/2016 11:36:36

    cit "Con quel ciclo viene cancellato il contenuto delle celle D3, D5 e D7."

    Un ciclo per cancellare dei range fissi? Perchè?

    Range("D3, D5, D7").ClearContents
    Un saluto alla comitiva
    Cucù



  • di Luca73 data: 05/05/2016 13:28:32

    Ciao Cucu
    semplicemente perchè dato l'esempio postato ho ritenuto che tale elenco potesse diventare più lungo....
    come poi ha confermato ritz75 successivamente.

    Rimane sempre e comunque inteso che ogni aiuto o correzione sono sempre benvenuti e infatti non avrei mai scritto il range come lo hai fatto tuin quanto non sapevo dell'uso della virgola in quel contesto.

    pertanto Grazie e Ciao
    Luca