2016-12-19 4 views
0

Мое намерение - выбрать каждую другую ячейку в строке. Мой код (я уверен, что там должен быть лучшим способом сделать это, но один шаг в то время, я думаю):VBA Ошибка выполнения 1004 Диапазон с двузначными цифрами

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 

Я приращение на 2, чтобы выделить каждую вторую строку, а также. Он возвращает ошибку (метод «диапазон» объекта «_Global» не удался), когда row - это что-то более 10. Я не смог найти ответы через Google. Кажется, это не проблема. Я действительно озадачен тем, почему он работает только для строк с одной цифрой. Любая помощь приветствуется.

+3

IIR существует ограничение на 255 символов для текста 'Range'. – Comintern

+0

Или возьмите целую строку и вставьте ее в ближайшее окно, как эта строка '? String', чтобы увидеть, что она производит – Vityata

ответ

3

Это может быть намного проще для кода | читать | отлаживать.

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 

Утверждение Союза будет соединять ячейки в существующем диапазоне (если это не очевидно из кода).

+0

Небольшая настройка, и это работает как шарм! Спасибо огромное! –