очень новый для Excel VBA и работает над упражнением для создания листа заказа на поставку с пользовательской формой.Row Function Maths ClearContents - Excel VBA
При попытке очистить строки на основе пары переменных столкнулись с проблемой.
У меня есть кнопка, чтобы очистить строку, которая только что был добавлен к листу, с помощью следующего кода:
Private Sub RemovePrevious_Click()
'Removes last line of PO
If LineItemTotal > 1 Then
Rows(LineItemTotal + POrowstart - 1).SpecialCells(xlCellTypeConstants).ClearContents
End If
End Sub
LineItemTotal является диапазон на листе, который увеличивается по мере добавления новых линий. Он объявляется публично с POrowstart в начале UserForm:
Private LineItemTotal As Integer
Private POrowstart As Integer
Затем они назначены в других подразделах:
LineItemTotal = Range("LineItemTotal")
POrowstart = 10
Проблема заключается в том, что при использовании кнопки для запуска removeprevious юга, математика не складывается. Например, когда LineItemTotal равно 3, он должен удалить строку 12 (правильный), но вместо этого удаляет строку 11. Если вы снова нажмете ее (LineItemTotal теперь на 2, поэтому должен удалить 11), он выдает ошибку «нет ячеек» были найдены «как будто он удаляет 11, но он уже ошибочно очистил это.
У меня есть специальные коды в коде, так как есть формулы в строке, которую я хотел бы сохранить.
Спасибо за любую помощь в этом.
Я могу дать вам небольшой, но очень мощный совет: запишите MACRO, в котором вы делаете все, что вам нужно (например, очищаете выделенные ячейки), прекратите запись, а затем скопируйте сгенерированный код в свой VBA (вам, возможно, потребуется сделать некоторые корректировки). Вот как я нахожу способ сделать много вещей в VBA. – FDavidov
Простейшим способом отладки этого является использование окна locals в vbexplorer и просмотр значений для переменных с каждым шагом вашего кода. Нажмите F8, чтобы запустить одну строку. View> Locals Window, чтобы показать местных жителей. Наслаждайтесь! – User632716
Спасибо, оба! Действительно хорошие советы, однако до сих пор не попали в корень проблемы, если вы все еще можете помочь? Код работает, если я объявляю и устанавливаю переменные в моей подгруппе, но не в том случае, если я объявляю в общих объявлениях и устанавливаю их в другом поднаборе, поэтому, похоже, что-то связано с переменными и областью? И tom preston, я не могу показаться, что вступаю в этот код с отладчиком, он просто переходит к другому суб! Еще раз спасибо –