Страница: 1 |
|
Вопрос: Вопрос!!!
|
Добавлено: 13.01.10 12:28
|
|
Автор вопроса: Iren | ICQ: 496876583
|
Добрый день! В первом столбце у меня идут названия. Во втором столбце я выгружаю данные. С помощью InputBox я ввожу дату (это параметр). эта дата подставляется в запрос, и я вытаскиваю данные. Но при следующем запуске макроса, данные запишутся поверх существующих. мне бы хотелось сделать так, чтобы при каждом следующем запуске данные записывались с следующий столбец. помогите как это сделать?
Ответить
|
Номер ответа: 2 Автор ответа:
hip
 
Вопросов: 3 Ответов: 22
|
Профиль | | #2
|
Добавлено: 13.01.10 23:08
|
Насколько я понимаю в первой строке таблицы у тебя заголовки (шапка), если нет то сделай её. При каждом запуске программы, прежде чем выводить данные, просматривай поочередно ячейки первой строки, слева направо, пока не найдешь первую пустую ячейку
-
- Dim СтолбецВывода As Integer
- Dim i As Integer
-
- For i = 1 To ActiveSheet.Columns.Count
- If Cells(1, i).Value = "" Then
- СтолбецВывода = i
- Exit For
- End If
- Next i
-
После этого выводи данные в найденный столбец. Не забудь только заголовок вписать, а то в следующий раз макрос опять здесь же остановится.
И ещё такие соображения:
1. Вместо ActiveSheet.Columns.Count в идеале следует поставить экселевскую константу, содержащую количество столбцев на листе, поищи как там она называется, если хочешь. В любом случае просто число столбцев вместо этого выражения здесь не годится, потому что в разных версиях Excel количество доступных столбцев тоже разное.
2.Не забудь предусмотреть что-нибудь на случай, если свободных столбцев уже не осталось, а процедуру все-равно запустили.
Много времени этот перебор занять не должен, но если вдруг будет занимать, то тут могу посоветовать только сохранять текущий столбец вывода в свойствах книги (CustomDocumentProperties), или в реестр писать (SaveSetting/GetSetting).
Ответить
|
Страница: 1 |
Поиск по форуму