#excel #vba
#excel #vba
Вопрос:
Я пытаюсь выяснить, что на самом деле делает следующее:
Sub ZoneTarget()
'
' Macro1 Macro
'
'
Dim myTarget As Variant
Sheets("Zones").Select
For i = 3 To 30
myTarget = Cells(i, 20).Value
If myTarget = "" Then
Exit For
End If
' Application.CutCopyMode = False
' Cells(i, 18).GoalSeek Goal:=myTarget, ChangingCell:=Cells(i, 8)
If Cells(i, 21).Value < -0.05 / 100 Or Cells(i, 21).Value > 0.05 / 100 Then
Cells(i, 8).Value = Round(Cells(i, 8).Value * (1 Cells(i, 21).Value), 6)
End If
Next i
End Sub
Я изменил рабочий лист, и теперь макрос больше не работает. Как только я выясню, что делается, я, надеюсь, смогу обновить нужную часть, чтобы она снова заработала.
Из того, что я могу сказать, должно произойти следующее:
На вкладке «Зоны» В строках С 3 по 30 в столбце 20 (T), но только до тех пор, пока строка, в которой столбец T, не будет пустой
Если столбец 21 (U) в указанных строках либо меньше -0.05, либо больше 0.05, то значение в столбце 8 (H) следует умножить на одно плюс значение в столбце 21 (U), это значение следует округлить
Я не уверен, чего мне здесь не хватает, но когда я запускаю макрос, он прерывается.
Будем признательны за любую помощь.
Комментарии:
1.
either less than -0.05 or greater than 0.05
должно бытьeither less than -0.0005 or greater than 0.0005
. для обоих этих значений есть деление на 100. Также выполняйте, пока T не станет пустым2. измените
Sheets("Zones").Select
наSheets("Zones").Activate
. Я бы использовалWith Sheets("Zones")
и изменилCells
на (точка).Cells
. Менее подвержен ошибкам в более сложном коде. Кроме того,Dim ws As Worksheet
иSet ws = Worksheets("Zones")
последующее использованиеws.Cells(
является требовательным, и у вас могут быть разные переменные для разных листов. Все зависит от того, насколько сложным будет код.3. Какое сообщение об ошибке он выдает вам, когда он «ломается»?