Цикл по столбцам

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Lionzi
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 12.09.2003 (Пт) 10:19

Цикл по столбцам

Сообщение Lionzi » 12.09.2003 (Пт) 10:59

Помогите, нужно создать цикл по столбцам. по 4 строке.
Если в ячейке по адресу (N4), где N - любой солбец, находиться ноль, то столбец скрыть.

Если делать по строкам, то получаеться следуюшее:

For n = 4 To 110
If Range("H" & n) = 0 Then
Range("H" & n).EntireRow.Hidden = True
End If
Next n

А как сделать по столбцам?

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 12.09.2003 (Пт) 12:47

Lionzi

Cells(i,j) - для работы с ячейкой по столбцу и строке
Rows(i) - для работы со строкой
Columns(j) - для работы со столбцом


Понятно? :)

Lionzi
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 12.09.2003 (Пт) 10:19

Сообщение Lionzi » 12.09.2003 (Пт) 13:37

Попробывал сделать такой код,

For I = 9 To 110
If Cells(I & "4").Value = 0 Then
Cells(I & "4").EntireColumn.Hidden = True
End If
Next I

Но он скрыл все подряд, через один столбик, не обращая внимание не значение в строке 4.

Нельзя ли привести участок кода, который бы решил эту проблему?

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 12.09.2003 (Пт) 13:57

Не Cells(I & "4") а Cells(I,4)

Видишь разницу? :wink:

Lionzi
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 12.09.2003 (Пт) 10:19

Сообщение Lionzi » 12.09.2003 (Пт) 14:04

Спасибо, но в этом случии он вообще не скрывает ни одного столбца.

For I = 9 To 110
If Cells(I, 4) = 0 Then
Cells(I, 4).EntireColumn.Hidden = True
End If
Next I

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 12.09.2003 (Пт) 14:08

Хм.. а что если не i,4 а 4,i ? :) Просто я навскидку не помню, какой параметр строка а какой колонка :)

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 12.09.2003 (Пт) 14:08

я, не понимаю, если нужно скрывать I столбец, то тогда так:

For I = 9 To 110
If Cells(I, 4) = 0 Then
columns(I).EntireColumn.Hidden = True
End If
Next I

Lionzi
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 12.09.2003 (Пт) 10:19

Сообщение Lionzi » 12.09.2003 (Пт) 14:23

В такой форме, он полностью скрывает все столбцы в заданном диапозоне...

For I = 9 To 110
If Cells(I, 4) = 0 Then
Columns(I).EntireColumn.Hidden = True
End If
Next I

Попробую привести кодж полностью, первая часть выполняется полностью

Sub Скрытьпустые()
Sheets("Ассортимент").Select
For n = 4 To 110
If Range("H" & n) = 0 Then
Range("H" & n).EntireRow.Hidden = True
End If
Next n

до этого момента, все отлично

For I = 9 To 110
If Cells(I, 4) = 0 Then
Columns(I).EntireColumn.Hidden = True
End If
Next I
а здесь, скрывает все столбцы...

End Sub

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 12.09.2003 (Пт) 19:02

Не знаю, как правильно, но м. б. Cells(i, 4).Text? :?:
Нет меня больше

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

Сообщение GSerg » 13.09.2003 (Сб) 5:24

Для справки:
Если ячейка пуста, то считается, что в ней ноль или пустая строка, смотря как обращаться. Пустые ячейки есть?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Lionzi
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 12.09.2003 (Пт) 10:19

Сообщение Lionzi » 13.09.2003 (Сб) 6:08

A.A.Z.

Cells(I, 4).Text Также ничего не дает,

GSerg
Мне как раз и надо скрыть все столбцы, в которых нет значения.
Я пробывал создать новый файл и там заполнил строку произвольными символами, с промежутком в 1-2 столбца. Все равно получаеться тоже самое.
Также пробывал строку с формулами (сумма) где в некоторых столбцах результат был ноль. И никокого удовлетворяющего меня результата найти не смог.
Могу выслать сам файл, который я делаю, чтобы вы могли попробывать.
Ну что взять с чайника, кроме кипятка?

Lionzi
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 12.09.2003 (Пт) 10:19

Сообщение Lionzi » 13.09.2003 (Сб) 6:46

Всем спасибо, я наконец разобрался, что к чему!

мне надо было просто прописать

Dim I As Integer

в начале цикла, и сразу все стало на свои места. Спасибо.
Ну что взять с чайника, кроме кипятка?


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 13

    TopList