powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Лето. Топиков новых мало. Как обратиться в цикле к столбцу?
7 сообщений из 7, страница 1 из 1
Лето. Топиков новых мало. Как обратиться в цикле к столбцу?
    #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
Лето. Топиков новых мало. Как обратиться в цикле к столбцу?
    #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
Лето. Топиков новых мало. Как обратиться в цикле к столбцу?
    #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
Лето. Топиков новых мало. Как обратиться в цикле к столбцу?
    #36067818
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а конструкция Columns(1) не работает? вот новость, не знал, не проверял...
...
Рейтинг: 0 / 0
Лето. Топиков новых мало. Как обратиться в цикле к столбцу?
    #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
Лето. Топиков новых мало. Как обратиться в цикле к столбцу?
    #36068195
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей06,

Приложи файлик, нехочется моделировать.
...
Рейтинг: 0 / 0
Лето. Топиков новых мало. Как обратиться в цикле к столбцу?
    #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
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Лето. Топиков новых мало. Как обратиться в цикле к столбцу?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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