Перебор всех выделенных столбцов на активном листе.

Программирование на Visual Basic for Applications
AHTOXA
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 147
Зарегистрирован: 17.04.2003 (Чт) 13:38
Откуда: Россия, г. Петрозаводск

Перебор всех выделенных столбцов на активном листе.

Сообщение AHTOXA » 24.04.2003 (Чт) 10:41

Проблема такая: нужно перебрать все выделенные столбцы на активном листе. Как лучше сделать?
Bandit

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.04.2003 (Чт) 11:02

Циклом по коллекции Selection.Areas, а внутри нее циклом по коллекции .Columns
Lasciate ogni speranza, voi ch'entrate.

AHTOXA
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 147
Зарегистрирован: 17.04.2003 (Чт) 13:38
Откуда: Россия, г. Петрозаводск

Сообщение AHTOXA » 24.04.2003 (Чт) 11:18

Так не получится. Мне нужно засасывать по строкам. Т. е., пусть имеется таблица:

A B C
8 2 9
4 5 6

, причем столбцы A и C выделены, а B нет. Мне нужно получить 8 9
и 4 6. Причем мне нужно также знать номер столбца A и C в таблице.
В данном случае это 1 и 3.

Нельзя-ли сделать как-нибудь так:

Sub Test()
Dim i As Long, j As Long
Dim r As Boolean, k As Boolean
i = 1
j = 1
r = True
While r
k = True
While k
If ActiveWorkbook.ActiveSheet.Cells(i, j).Value = "" Then
k = False
Else
j = j + 1
End If
Wend
j = 1
i = i + 1
If ActiveWorkbook.ActiveSheet.Cells(i, j).Value = "" Then
r = False
End If
Wend
End Sub

Только чтобы проверялось выделена данная ячейка или нет?
Bandit

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.04.2003 (Чт) 11:30

Код: Выделить всё
For A = 1 To Selection.Areas.Count
  For C = 1 To Selection.Areas(A).Columns.Count
    For R = 2 To 10
      V = Selection.Areas(A).Columns(C).Rows(R).Text
      MsgBox "Столбец " & Selection.Areas(A).Columns(C).Column & _
        Chr$(13) & Chr$(10) & "Значение " & V
    Next R
  Next C
Next A

подойдет?
Lasciate ogni speranza, voi ch'entrate.

AHTOXA
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 147
Зарегистрирован: 17.04.2003 (Чт) 13:38
Откуда: Россия, г. Петрозаводск

Сообщение AHTOXA » 24.04.2003 (Чт) 11:38

Ты хотел сказать, так:

For a = 1 To Selection.Areas.Count
For r = 1 To Selection.Areas(a).Rows.Count
For c = 1 To Selection.Areas(a).Columns.Count
V = Selection.Areas(a).Columns(c).Rows(r).Text
MsgBox "Столбец" & Selection.Areas(a).Columns(c).Column & _
Chr$(13) & Chr$(10) & "Значение" & V
Next c
Next r
Next a
:)
Bandit

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.04.2003 (Чт) 11:42

Э... Собственно, да :)
Lasciate ogni speranza, voi ch'entrate.

AHTOXA
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 147
Зарегистрирован: 17.04.2003 (Чт) 13:38
Откуда: Россия, г. Петрозаводск

Сообщение AHTOXA » 24.04.2003 (Чт) 11:43

А как сделать, чтобы брались в рассмотрение только выделенные области на активном листе?
Bandit


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

    TopList  
cron