Condividi tramite

Excel - VBA - Riferimento celle e aggiunta colonne

Anonimo
2019-08-24T14:23:31+00:00

Buongiorno a tutti,

scrivendo il codice VBA si può fare riferimento ad una cella attraverso il numero di riga e di colonna, per esempio:

MiaVariabile = Cells(10,10).value

Aggiungedo o togliendo colonne, il codice salta in quanto la colonna a cui vorremmo riferirci non sarà più la 10....

...esiste un modo per ovviare a questo problema senza rinunciare alla modalità di riga,colonna.

Grazie mille.

Paolo

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

5 risposte

Ordina per: Più utili
  1. Anonimo
    2019-08-25T12:14:12+00:00

    Ciao Paolo,

    Mmm...Non ho capito.

    Se ho una tabella nelle colonne 95~99, e aggiungo dieci colonne...il codice non dovrebbe funzionare, giusto? 

    Non sono d'accordo.

    Per mettere i trattini alle t ed i puntini sulle i, prova la seguente procedura:

    '=========>>

    Option Explicit

    Public arrValori As Variant

    '--------->>

    Public Sub Tester()

        Dim WB As Workbook

        Dim SH As Worksheet

        Dim Rng As Range

        Dim miaVar As Variant

        Const sFoglio As String = "Foglio1"        '<<=== Modifica

        Set WB = ThisWorkbook

        Set SH = WB.Sheets(sFoglio)

        With SH

            Set Rng = .Range(.Cells(1, 1), .Cells(200, 100))

        End With

        arrValori = Rng.Value

        '\Richiamare un valore memorizzato

        '\ nell'array arrValori

        Call MsgBox( _

             Prompt:=arrValori(50, 10), _

             Buttons:=vbInformation, _

             Title:="REPORT")

         '\ inserisci 5 colonne

         SH.Columns(1).Resize(5).Insert

         '\ Richiama lo stesso valore, il quale rimane invariato nonostante

         '\ l'inserimento delle colonne

             Call MsgBox( _

             Prompt:=arrValori(50, 10), _

             Buttons:=vbInformation, _

             Title:="REPORT")

    End Sub

    '<<=========

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2019-08-25T11:55:43+00:00

    Mmm...Non ho capito.

    Se ho una tabella nelle colonne 95~99, e aggiungo dieci colonne...il codice non dovrebbe funzionare, giusto?

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2019-08-25T11:39:53+00:00

    Ciao Paolo,

    In realtà, mi rferivo a diverse celle. Molte colonne e molte righe che in genere gestisco con uno o più cicli:

    for i = 20 to 200

         MiaVar = cells(i, 50).value

         AltraVar = cells(i, 100).value

         .... .... .... 

    next i

    È possibile dichiarare un array a livello di modulo e caricare l'array con i valori dell'array di interesse. Questo array rimarrà inalterato quando vengono inserite colonne o righe e i valori di interesse possono essere richiamati indipendentemente da tali inserimenti.

    A titolo di esempio, prova qualcosa del genere:

    '=========>>

    Option Explicit

    Public arrValori As Variant

    '--------->>

    Public Sub Tester()

        Dim WB As Workbook

        Dim SH As Worksheet

        Dim Rng As Range

        Dim miaVar As Variant

        Const sFoglio As String = "Foglio1"       '<<=== Modifica

        Set WB = ThisWorkbook

        Set SH = WB.Sheets(sFoglio)

        With SH

            Set Rng = .Range(.Cells(1, 1), .Cells(200, 100))

        End With

        arrValori = Rng.Value

        '\ A titolo di esempio, richiama uno dei valori memorizzati

        '\ nell'array arrValori

        Call MsgBox( _

             Prompt:=arrValori(50, 10), _

             Buttons:=vbInformation, _

             Title:="REPORT")

    End Sub

    '<<=========

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2019-08-25T09:00:40+00:00

    Grazie Norman.

    In realtà, mi rferivo a diverse celle. Molte colonne e molte righe che in genere gestisco con uno o più cicli:

    for i = 20 to 200

         MiaVar = cells(i, 50).value

         AltraVar = cells(i, 100).value

         .... .... .... 

    next i

    :-O

    Saluti

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2019-08-25T08:50:34+00:00

    Ciao Paolo,

    scrivendo il codice VBA si può fare riferimento ad una cella attraverso il numero di riga e di colonna, per esempio:

    MiaVariabile = Cells(10,10).value

    Aggiungedo o togliendo colonne, il codice salta in quanto la colonna a cui vorremmo riferirci non sarà più la 10....

    ...esiste un modo per ovviare a questo problema senza rinunciare alla modalità di riga,colonna.

    Imposta un nome per la cella di interesse e, successivamente, fai riferimento al nome della cella. In questo modo il nome definito farà sempre riferimento alla cella di interesse, indipendentemente dall'inserimento di righe o colonne.

    Quindi, prova qualcosa del genere:

    '=========>>

    Option Explicit

    '--------->>

    Public Sub Tester()

        Dim WB As Workbook

        Dim SH As Worksheet

        Dim rCell As Range

        Const sFoglio As String = "Sheet1"       '<<=== Modifica

        Set WB = ThisWorkbook

        Set SH = WB.Sheets(sFoglio)

        Set rCell = SH.Cells(10, 10)

        SH.Names.Add Name:="Pippo", RefersTo:=rCell

        '\ Tuo codice ...

    End Sub

    '<<=========

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento