Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Лето. Топиков новых мало. Как обратиться в цикле к столбцу? / 7 сообщений из 7, страница 1 из 1
01.07.2009, 09:24:38
    #36067143
Сергей06
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лето. Топиков новых мало. Как обратиться в цикле к столбцу?
Добрый день!
Использую такой цикл:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Sub test()
    
    i =  81  'номер строки где находятся целевые ячейки
    ii =  75  'номер  строки где находится изменяемые ячейки
    a =  4  'номер столбца, с которого необходимо начать подбор параметра целевых ячеек
    aa =  9  ' номер столбца, которым неьбходимо закончить подбр параметра целевых яцеек
     
      For j = a To aa
        Cells(i, j).GoalSeek Goal:= 0 , ChangingCell:=Cells(ii, j)
      Next
      
End Sub
 

 
1. Как мне обращаться к столбцам не по их номерам, а по названию a = "D", aa = "I" ? Нужно использовать другую конструкцию цикла?
2. Т.к. строки / столбцы могут добавляться / удалятся изменятся, то нужно править макрос.
Если диапазоны, в которых происходит изменения я обзову как-будь, то как мне обращаться э этим диапазонам?
...
Рейтинг: 0 / 0
01.07.2009, 12:57:05
    #36067772
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лето. Топиков новых мало. Как обратиться в цикле к столбцу?
Сергей06,
Код: plaintext
1.
2.
3.
4.
Sub f()
    For Each a In Columns("B:G").Columns
        Debug.Print Cells( 5 , a.Column).Address
    Next
End Sub
...
Рейтинг: 0 / 0
01.07.2009, 13:05:19
    #36067802
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лето. Топиков новых мало. Как обратиться в цикле к столбцу?
Сергей06,

Диапазону F:I - присвоил имя = myName1
Код: plaintext
1.
2.
3.
4.
Sub fd()
    For Each a In ThisWorkbook.Names("myName1").RefersToRange.Columns
        Debug.Print Cells( 5 , a.Column).Address
    Next
End Sub
...
Рейтинг: 0 / 0
01.07.2009, 13:09:14
    #36067818
PlanB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лето. Топиков новых мало. Как обратиться в цикле к столбцу?
а конструкция Columns(1) не работает? вот новость, не знал, не проверял...
...
Рейтинг: 0 / 0
01.07.2009, 14:02:50
    #36067939
Сергей06
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лето. Топиков новых мало. Как обратиться в цикле к столбцу?
vkodor,
Спасибо, с именем получилось очень даже неплохо.
По ощущением начал работать быстрее, хотя таймер показывает, что ничего не изменилось :)

Вопрос может не по теме:
После выполнения макроса мы не можем вернуть последние действия, т.к. очищается стек предыдущих состояний
но когда я запускаю макрос по событию
Код: plaintext
1.
2.
3.
Private Sub Worksheet_Change(ByVal Target As Range)
ПодборПараметраИмя
End Sub
то остается возможность вернуть предыдущие действия. Так и нужно?



Вот такой код у меня получился, может что лишнее и можно подправить / упростить? Подскажите?
Стоит ли добавлять проверку того, что целевая ячейка уже равна нулю и не нужно подбирать параметр?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
Sub ПодборПараметраИмя()
     'vrem = Timer
    Application.ScreenUpdating = False ' отключение обновления экрана
    
'    i = 113 'номер строки где находятся целевые ячейки
'    ii = 107 'номер  строки где находится изменяемые ячейки
'    a = 4 'номер столбца, с которого необходимо начать подбор параметра целевых ячеек
'    aa = 9 ' номер столбца, которым неьбходимо закончить подбр параметра целевых яцеек
    
    i = ThisWorkbook.Names("Нулевое").RefersToRange.Row
    ii = ThisWorkbook.Names("Подбираемое").RefersToRange.Row
    For Each j In ThisWorkbook.Names("Нулевое").RefersToRange.Columns
    If Cells(i, j.Column).HasFormula Then
      If Cells(ii, j.Column).HasFormula Then
         AddrCell = Cells(ii, j.Column).Address
         MsgBox "В ячейке  " & AddrCell & " занесена формула. Нужно ее удалить"
      Else
         Cells(i, j.Column).GoalSeek Goal:= 0 , ChangingCell:=Cells(ii, j.Column)
      End If
     Else
         AddrCell2 = Cells(i, j.Column).Address
          MsgBox "В ячейке  " & AddrCell2 & " Нет формулы. Она должна быть!!!"
     End If
   
    Next
    
'     Debug.Print Timer - vrem
End Sub
...
Рейтинг: 0 / 0
01.07.2009, 15:13:41
    #36068195
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лето. Топиков новых мало. Как обратиться в цикле к столбцу?
Сергей06,

Приложи файлик, нехочется моделировать.
...
Рейтинг: 0 / 0
01.07.2009, 15:24:26
    #36068230
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лето. Топиков новых мало. Как обратиться в цикле к столбцу?
Сергей06,
как вариант
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Sub ПодборПараметраИмя()
    Dim i!, ii!, rng As Range
     'vrem = Timer
    Application.ScreenUpdating = False ' отключение обновления экрана
    
'    i = 113 'номер строки где находятся целевые ячейки
'    ii = 107 'номер  строки где находится изменяемые ячейки
'    a = 4 'номер столбца, с которого необходимо начать подбор параметра целевых ячеек
'    aa = 9 ' номер столбца, которым неьбходимо закончить подбр параметра целевых яцеек
    With ThisWorkbook.Names("Нулевое")
'         i = .RefersToRange.Row
         ii = ThisWorkbook.Names("Подбираемое").RefersToRange.Row
         For Each rng In .RefersToRange.Cells
            If rng.HasFormula Then
                If Cells(ii, rng.Column).HasFormula Then
                   AddrCell = Cells(ii, rng.Column).Address
                   MsgBox "В ячейке  " & AddrCell & " занесена формула. Нужно ее удалить"
                Else
                   rng.GoalSeek Goal:= 0 , ChangingCell:=Cells(ii, rng.Column)
                End If
             Else
                 AddrCell2 = rng.Address
                  MsgBox "В ячейке  " & AddrCell2 & " Нет формулы. Она должна быть!!!"
             End If
        
         Next
    End With
'     Debug.Print Timer - vrem
End Sub
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Лето. Топиков новых мало. Как обратиться в цикле к столбцу? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]