2016-12-19 8 views
0

Meine Absicht ist es, jede zweite Zelle in einer Reihe auszuwählen. Mein Code (ich bin sicher, es muss ein besserer Weg, dies aber einen Schritt zu einer Zeit, die ich denke, zu erreichen):VBA Laufzeitfehler 1004 Bereich mit zwei Ziffern

Range("C" & row & ":C" & row + 1 & ", E" & row & ":E" & row + 1 & ", G" & row & ":G" & row + 1 & ", I" & row & ":I" & row + 1 & ", K" & row & ":K" & row + 1 & ", M" & row & ":M" & row + 1 & ", O" & row & ":O" & row + 1 & ", Q" & row & ":Q" & row + 1 & ", S" & row & ":S" & row + 1 & ", U" & row & ":U" & row + 1 & ", W" & row & ":W" & row + 1 & ", Y" & row & ":Y" & row + 1 & ", AA" & row & ":AA" & row + 1 & ", AC" & row & ":AC" & row + 1 & ", AE" & row & ":AE" & row + 1 & ", AG" & row & ":AG" & row + 1 & ", AI" & row & ":AI" & row + 1 & ", AK" & row & ":AK" & row + 1 & ", AM" & row & ":AM" & row + 1 & ", AO" & row & ":AO" & row + 1 & ", AQ" & row & ":AQ" & row + 1 & ", AS" & row & ":AS" & row + 1 & ", AU" & row & ":AU" & row + 1 & ", AW" & row & ":AW" & row + 1 & ", AY" & row & ":AY" & row + 1 & ", BA" & row & ":BA" & row + 1).Select 

ich um 2 Uhr Inkrementieren als auch jede andere Zeile zu markieren. Es gibt einen Fehler (Methode 'range' des Objekts '_Global' fehlgeschlagen) zurück, wenn row etwas über 10 ist. Ich konnte keine Antworten über Google finden. Scheint kein häufiges Problem zu sein. Ich bin wirklich verwirrt, warum es nur für einzelne Ziffernreihen funktioniert. Jede Hilfe wird geschätzt.

+3

IIR gibt es eine 255 Zeichen Grenze für eine Text 'Range' Spezifikation. – Comintern

+0

Oder nehmen Sie die ganze Saite und fügen Sie sie in das unmittelbare Fenster ein wie diese "Saite", um zu sehen, was es produziert – Vityata

Antwort

3

Dies ist möglicherweise viel einfacher zu codieren | lesen | debuggen.

Dim ws as Worksheet 
Set ws = Worksheets("mySheet") 'change as needed 

Dim x as Integer 
For x = 3 to 53 Step 2 'loop from C to BA skipping 1 column in between 

    Dim rngEveryOther as Range 
    If rngEveryOther is Nothing 
     Set rngEveryOther = ws.Range(ws.Cells(i,x),ws.Cells(i+1,x)) 
    Else 
     Set rngEveryOther = Union(rngEveryOther, ws.Range(ws.Cells(i,x),ws.Cells(i+1,x))) 
    End If 

Next 

rngEveryOther.Select 

Die Union-Anweisung verbindet Zellen in einen vorhandenen Bereich (wenn das nicht aus dem Code offensichtlich ist).

+0

Eine kleine Anpassung und es funktioniert wie ein Charme! Ich danke dir sehr! –

Verwandte Themen