Нужно заменить число на переменную

Программирование на Visual Basic for Applications
VohA
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 19.02.2004 (Чт) 13:44

Нужно заменить число на переменную

Сообщение VohA » 12.05.2004 (Ср) 13:13

Имеется код:
Dim J As Integer
J = 1
Do Until IsEmpty(Cells(J, "A")) And IsEmpty(Cells(J + 1, "A"))
If IsEmpty(Cells(J, "A")) Then
Sheets("Лист1").Range(Cells(J + 2, "B"), Cells(J + 30, "C")).Select
Selection.Copy
Sheets(1).Cells(1, 1).Select
ActiveSheet.Paste
End If
J = J + 1
Loop
Нужно чтобы выделялся диапазон не (Cells(J + 2, "B"), Cells(J + 30, "C")), а (Cells(J + 2, "B"), Cells(первая пустая ячейка в колонке "C")), как это сделать :?: :oops:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.05.2004 (Чт) 9:38

Пытался понять, что делает код... Не смог... Опиши задачу-то :roll:
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 13.05.2004 (Чт) 13:05

2GSerg вобщем-то ты прав :?
2VohA держи функцию которая возвращает первую пустую ячейку (ее строку) на входе имя листа, ряд, колонка
Код: Выделить всё
Function search_f(l As String, r As Integer, c As Integer) As Integer
Dim i As Integer
i = 0
Do While Sheets(l).Cells(r + i, c).Value <> ""
    i = i + 1
Loop
search_f = r + i
End Function

что делать дальше надеюсь разберешься :D
Ничто так не ограничивает полёт мысли программиста, как компилятор

VohA
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 19.02.2004 (Чт) 13:44

Сообщение VohA » 13.05.2004 (Чт) 13:46

Хорошо, поставим вопрос по-другому, как програмно определить количество строк в колонке между одной пустой ячейкой и другой?
А код изначально выглядел так:
Dim J As Integer
J = 1
Do Until IsEmpty(Cells(J, "A")) And IsEmpty(Cells(J + 1, "A"))
If IsEmpty(Cells(J, "A")) Then
Sheets(1).Range(Cells(J + 2, "B"), Cells(J + 30, "C")).Select
Selection.Copy
Sheets(1).Select
Sheets.Add
Sheets(1).Name = Sheets(2).Cells(J + 1, "A")
Sheets(1).Cells(1, 1).Select
ActiveSheet.Paste
Selection.Columns.AutoFit
Sheets(1).Move after:=Sheets(2)
Sheets(1).Select
End If
J = J + 1
Loop
Вот мне и надо каждый раз заменять "30" количеством непустых строк.
P.S. Извиняюсь за тупость.

Calvin
Постоялец
Постоялец
 
Сообщения: 409
Зарегистрирован: 21.01.2003 (Вт) 12:13
Откуда: Sebastopol

Сообщение Calvin » 13.05.2004 (Чт) 14:31

можно проще
если начинать с непустой ячейки, то так
Код: Выделить всё
perem = Cells(1,1).End(xlDown).Row + 1

а если стартовая ячейка пустая, то так
Код: Выделить всё
perem = Cells(1,1).End(xlDown).End(xlDown).Row + 1

и всех делов :wink:
-Whose the motocycle, is this? -It`s a chopper, baby! -Whose chopper is this? -Zed`s! -Who is Zed? -Zed`s dead, baby, Zed`s dead! :-D


Вернуться в VBA

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

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

    TopList