Short:
У меня есть рабочая книга с флажками и поворотной таблицей. После обновления сохраненные данные будут перенесены на другой лист. Кроме того, когда флажок установлен, он получит статус «Истина» и также будет обновлен.
После обновления сводной таблицы «статья» затем удаляется из сводной таблицы.
Проблема:
Когда я установлю для первого флажка значение «True», следующая статья в последовательности будет каким-то образом пропущена.
Все остальные будут в порядке.
Когда я установлю 1-е, 3-е и 6-е, оно пропустит одинаковое количество строк, поэтому 2 будет пропущено. 4 и 5 и 7,8,9
Ожидаемый результат: Я не хочу пропустить строки.
Если флажок равен true, обновить статус до true, затем refre sh pt. go к следующей статье.
Мне не нужен флажок ложного результата.
Мысли:
Полагаю, мой l oop как-то не зацикливается должным образом, потому что я установил некоторый код за его пределами. Я не знаю, где именно.
Дополнительно:
Я относительно новичок в VBA и еще не научился генерировать чистый код. Да, я создал нечетную переменную флажка.
Обновление: Я понял, что эта часть делает все go ape. нет необходимости в refre sh после каждого цикла. Да, в конце полного цикла должен быть refre sh.
'Set active checkbox to false
If Blad4.OLEObjects(cb).Object.Value = True Then
Blad4.OLEObjects(cb).Object.Value = False
'Refresh Pivot table
Blad4.PivotTables("PT_EXCESS").PivotCache.Refresh
End If
Если кто-то будет любезен, чтобы помочь мне разобраться
Я не могу понять, как выйти из моего l oop. Да, я могу "сделать до". и "выход для".
Но я не знаю, какой код нужно заменить, потому что, Для каждой статьи в РНГ. заставляет весь код работать :(.
Sub status()
Dim tbl As ListObject
Dim FoundCell As Range
Dim LookupValue As String
Dim Article As Range
Dim rng As Range
Set rng = Blad4.Range("A4:A13")
For Each Article In rng
LookupValue = Article
Set tbl = Blad2.ListObjects("PQ_ABC_EXCESS")
On Error Resume Next
Set FoundCell = tbl.DataBodyRange.Columns(1).Find(LookupValue, LookAt:=xlWhole)
On Error GoTo 0
If Not FoundCell Is Nothing Then
FoundCell.Offset(, 16).Value = Article.Offset(, 4)
cbnr = Article.Row - 3
cb = "Checkbox" & cbnr
Else
MsgBox "Value not found"
End If
If Blad4.OLEObjects(cb).Object.Value = True Then
FoundCell.Offset(, 17).Value = Blad4.OLEObjects(cb).Object.Value
Else
End If
'Set active checkbox to false
If Blad4.OLEObjects(cb).Object.Value = True Then
Blad4.OLEObjects(cb).Object.Value = False
'Refresh Pivot table
Blad4.PivotTables("PT_EXCESS").PivotCache.Refresh
End If
Next Article
End Sub