2015-07-03 3 views
0

Есть ли какой-либо способ для цикла через диапазон (в идеале a для каждой ячейки в X), который может сначала сгруппировать столбцы? например A1, A2, A3, A4, а не A1, B1, C1, D1VBA loop through range, по столбцам first

Я попытался перенося диапазон, как, но, увы, это не работает

For Each cell In application.transpose(.Range("C3:G100")) 

У меня есть чувство, что я буду иметь в использовать что-то вроде

for c = 0 to .Range("C3:G100").columns.count 
    for r =0 to .range("C3:G100").rows.count 
+0

выбрать ответ сказать, если это может быть закрыт. Держите SO чистым, и давайте не завышать оставшийся без ответа вопрос – Krishna

+0

На него не ответил. Я знаю, как делать описанные ниже циклы, но я не спрашивал об этом. Я спрашивал, можете ли вы сделать для каждой ячейки в аналогичном манере, например. первых. – 99moorem

ответ

1
dim ws as worksheet 
set ws = ActiveSheet ' change here as required 
For icol = 1 to n '(change here to max) 
    For irow = 1 to n '(change here to max) 
    'some code here 
    ' access cells as ws.cells(irow, icol) 
    nex irow 
next icol 
0

Поместите его в массив.

Dim i As Long, j As Long 
Dim avArray As Variant 

avArray = Range("C3:G100").Value 

For j = LBound(avArray, 2) To UBound(avArray, 2) 
    For i = LBound(avArray, 1) To UBound(avArray, 1) 
     avArray(i, j) = CStr(avArray(i, j)) 'do something here, this 
              'example just makes the 
              'value a string 
    Next 
Next 

Если вы делаете изменения, то просто сбросить массив обратно на лист, как только вы сделали

Range("C3:G100").Value = avArray 
Смежные вопросы