VBA – Selezionare le colonne utilizzando i numeri?

Sto cercando un’alternativa a questo code, ma usando dei numeri.
Voglio selezionare 5 colonne, la colonna di inizio è una variabile, e poi seleziona 5 colonne di questo.

Columns("A:E").Select

Come faccio a utilizzare integers invece, alle colonne di riferimento? Qualcosa di simile al di sotto?

For n = 1 to 5
Columns("n : n + 4") .select
do sth
next n

Grazie.
Gemmo

InformationsquelleAutor gemmo | 2014-09-30

 

9 Replies
  1. 25

    È possibile utilizzare ridimensionare come questo:

    For n = 1 To 5
        Columns(n).Resize(, 5).Select
        '~~> rest of your code
    Next

    In qualsiasi Gamma di Manipolazione che, sempre tenere a mente Ridimensionare e Offset proprietà.

    • Ciao, Quello che se voglio ottenere intervallo di colonna di un particolare colonna con il numero di colonna
    • Puoi dirci qualcosa di più su quello che vuoi fare?
  2. 6
    Columns("A:E").Select

    Può essere direttamente sostituito da

    Columns(1).Resize(, 5).EntireColumn.Select

    Cui 1 può essere sostituito da una variabile

    n = 5
    Columns(n).Resize(, n+4).EntireColumn.Select

    A mio parere, è meglio trattare con un blocco di colonne anziché ciclo attraverso le colonne n a n + 4 in quanto è più efficiente.

    Inoltre, l’utilizzo di selezionare rallenterà il vostro codice. Così, invece di selezionare le colonne e quindi di eseguire un’azione su una selezione tenta invece di eseguire l’azione direttamente. Qui di seguito è un esempio per modificare il colore di colonne A-E al giallo.

    Columns(1).Resize(, 5).EntireColumn.Interior.Color = 65535
  3. 3

    è possibile utilizzare range con cells per ottenere l’effetto desiderato (ma sarebbe meglio non usare selezionare se non si dispone di a)

    For n = 1 to 5
    range(cells(1,n).entirecolumn,cells(1,n+4).entirecolumn).Select
    do sth
    next n
  4. 1

    Utilizzare il seguente, dove n è variabile e x è l’offset (4 in questo caso):

    LEFT(ADDRESS(1,n+x,4),1)

    Questo restituirà la lettera della colonna (quindi per n=1 e x=4, restituirà Un+4 = E). È quindi possibile utilizzare INDIRECT() per fare riferimento a questo, come così:

    COLUMNS(INDIRECT(LEFT(ADDRESS(1,n,4),1)&":"&LEFT(ADDRESS(1,n+x,4),1)))

    che con n=1, x=4 diventa:

    COLUMNS(INDIRECT("A"&":"&"E"))

    e così:

    COLUMNS(A:E)
  5. 1

    alcun bisogno di loop o ad.. prova questo..

    dim startColumnas integer
    
    dim endColumn as integer
    
    startColumn = 7
    
    endColumn = 24
    
    Range(Cells(, startColumn), Cells(, endColumn)).ColumnWidth = 3.8 ' <~~ whatever width you want to set..* 
    • Questo sembra solo selezionare la prima riga in quelle colonne per me.
    • Io con voto positivo a questa risposta perché l’utilizzo di Gamma e Cellule sembrava essere il più facile da leggere. Utilizzare .EntireColumn per ottenere più di cellule, come questa: Range(Cells(, startColumn), Cells(, endColumn)).EntireColumn.Select
    • Ancora più facile da leggere la versione è Range(Columns(startColumn), Columns(endColumn)).Select
  6. 0

    È possibile specificare gli indirizzi come “R1C2” invece di “B2”. Sotto File -> Opzioni -> Formuals -> Workingg con Formule c’è un pulsante stile di riferimento R1C1. che può essere impostato, come illustrato di seguito.

    VBA - Selezionare le colonne utilizzando i numeri?

  7. 0

    Stavo cercando una cosa simile.
    Il mio problema era quello di trovare l’ultima colonna nella riga 5 e quindi selezionare 3 colonne di prima, tra cui l’ultima colonna.

    Dim lColumn As Long
    
    lColumn = ActiveSheet.Cells(5,Columns.Count).End(xlToLeft).Column
    MsgBox ("The last used column is: " & lColumn)
    Range(Columns(lColumn - 3), Columns(lColumn)).Select

    Messaggio di casella è facoltativo in quanto è più di un controllo. Se si desidera selezionare le colonne dopo l’ultima colonna è sufficiente invertire la selezione del campo di

    Dim lColumn As Long
    
    lColumn = ActiveSheet.Cells(5,Columns.Count).End(xlToLeft).Column
    MsgBox ("The last used column is: " & lColumn)
    Range(Columns(lColumn), Columns(lColumn + 3)).Select
  8. -1

    In questo modo, è possibile iniziare a selezionare i dati anche dietro la colonna “Z” e selezionare un sacco di colonne.

    Sub SelectColumNums()
        Dim xCol1 As Integer, xNumOfCols as integer
        xCol1 = 26
        xNumOfCols = 17
        Range(Columns(xCol1), Columns(xCol1 + xNumOfCols)).Select
    End Sub
  9. -1

    Nell’esempio di codice riportato di seguito io uso le variabili solo per mostrare come il comando può essere utilizzato per altre situazioni.

    FirstCol = 1
    LastCol = FirstCol + 5
    Range(Columns(FirstCol), Columns(LastCol)).Select
    • Questo dovrebbe essere il commento, credo.
    • Questo non funziona

Lascia un commento