Cambiare colonna dinamicamente con un ciclo

Anonimo
2017-03-13T14:16:31+00:00

Ho la necessità, attraverso un ciclo for... next di scrivere dei dati nelle celle A1, B1, C1... Z1. Pensavo di farlo utilizzando un ciclo del genere:

For X = 1 to 10

sheets("F1").select

cells(A,B).copy

sheets("F2").select

Range("A1").PasteSpecial xlPasteValues '???

B=B+1

Next X

Come faccio ad assegnare un valore dinamico a quel Range("A1") che deve diventare poi B1, C1... Z1? Le righe di un foglio Excel sono numerate e quindi è facile ma le colonne hanno quel riferimento alfanumerico che mi complica la vita.

Grazie.

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
Anonimo
2017-03-13T17:33:18+00:00

Ciao Luigi,

Grazie Norman, con calma proverò a testare il codice che mi hai dato e soprattutto ad integrarlo nella macro che devo realizzare e che deve fare anche altre cose.

Intanto vorrei approfittare per chiederti se puoi egualmente darmi un suggerimento, poiché mi capita altre volte, su come cambiare dinamicamente col codice una colonna usando semplicemente lo stesso metodo che utilizzo per le righe, ad esempio, è sufficiente indicare la colonna ed assegnare una variabile alla riga:

tipo Range("A" & B)

Nel caso in cui, invece, volessi assegnare alla colonna una variabile, Excel non prevede la possibilità d'identificare, ad esempio, la colonna A come col. 1 e così via?

Chiedo scusa! Proprio per dimostrare un modo di ciclare le colonne, avevo postato la prima delle due mie routine; purtroppo, però, ho fatto un errore di copia / incolla! La prima routine avrebbe dovuto essere:

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

Option Explicit

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

Public Sub Tester()

    Dim WB As Workbook

    Dim srcSH As Worksheet, destSH As Worksheet

    Dim srcRng As Range, destRng As Range

    Dim i As Long

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

    Const sFoglio2 As String = "F2"                   '<<=== Modifica

    Const sIntervallo As String = "A1:Z1"          '<<=== Modifica

    Const sintervalloDest As String = "A1"        '<<=== Modifica

    Set WB = ThisWorkbook

    With WB

        Set srcSH = .Sheets(sFoglio)

        Set destSH = .Sheets(sFoglio2)

    End With

    Set srcRng = srcSH.Range(sIntervallo)

    Set destRng = destSH.Range(sintervalloDest)

    For i = 1 To srcRng.Cells.Count

        destRng.Offset(0, i - 1).Value = srcRng.Cells(i).Value

    Next i

End Sub

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

===

Regards,

Norman

La risposta è stata utile?

0 commenti Nessun commento

2 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2017-03-13T16:45:05+00:00

    Grazie Norman, con calma proverò a testare il codice che mi hai dato e soprattutto ad integrarlo nella macro che devo realizzare e che deve fare anche altre cose.

    Intanto vorrei approfittare per chiederti se puoi egualmente darmi un suggerimento, poiché mi capita altre volte, su come cambiare dinamicamente col codice una colonna usando semplicemente lo stesso metodo che utilizzo per le righe, ad esempio, è sufficiente indicare la colonna ed assegnare una variabile alla riga:

    tipo Range("A" & B)

    Nel caso in cui, invece, volessi assegnare alla colonna una variabile, Excel non prevede la possibilità d'identificare, ad esempio, la colonna A come col. 1 e così via?

    Grazie ancora, testo e ti do riscontro.

    Ciao

    luigi

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2017-03-13T15:15:44+00:00

    Ciao Luigi,

    Ho la necessità, attraverso un ciclo for... next di scrivere dei dati nelle celle A1, B1, C1... Z1. Pensavo di farlo utilizzando un ciclo del genere:

    For X = 1 to 10

    sheets("F1").select

    cells(A,B).copy

    sheets("F2").select

    Range("A1").PasteSpecial xlPasteValues '???

    B=B+1

    Next X

    Come faccio ad assegnare un valore dinamico a quel Range("A1") che deve diventare poi B1, C1... Z1? Le righe di un foglio Excel sono numerate e quindi è facile ma le colonne hanno quel riferimento alfanumerico che mi complica la vita.

    In genere, e a titolo di esempio, per ciclare le colonne, si potrebbe fare qualcosa del genere:

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

    Option Explicit

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

    Public Sub Tester()

        Dim WB As Workbook

        Dim srcSH As Worksheet, destSH As Worksheet

        Dim srcRng As Range, destRng As Range

        Dim i As Long

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

        Const sFoglio2 As String = "F2"                   '<<=== Modifica

        Const sIntervallo As String = "A1:Z1"          '<<=== Modifica

        Const sintervalloDest As String = "A1"         '<<=== Modifica

        Set WB = ThisWorkbook

        With WB

            Set srcSH = .Sheets(sFoglio)

            Set destSH = .Sheets(sFoglio2)

        End With

        Set srcRng = srcSH.Range(sIntervallo)

        Set destRng = destSH.Range(sintervalloDest)

        For i = 1 To srcRng.Cells.Count

            destRng.Offset(0, i - 1).Value = srcRng.Cells(i).Value

        Next i

    End Sub

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

    Tuttavia, in questo caso, non credo che sia necessario ciclare e, quindi, prova qualcosa del genere:

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

    Option Explicit

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

    Public Sub Tester()

        Dim WB As Workbook

        Dim srcSH As Worksheet, destSH As Worksheet

        Dim srcRng As Range, destRng As Range

        Dim i As Long

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

        Const sFoglio2 As String = "F2"                        '<<=== Modifica

        Const sIntervallo As String = "A1:Z1"               '<<=== Modifica

        Const sintervalloDest As String = "A20:Z20"   '<<=== Modifica

        Set WB = ThisWorkbook

        With WB

            Set srcSH = .Sheets(sFoglio)

            Set destSH = .Sheets(sFoglio2)

        End With

        Set srcRng = srcSH.Range(sIntervallo)

        Set destRng = destSH.Range(sintervalloDest)

        destRng.Value = srcRng.Value

    End Sub

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

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento