VBA Когда ячейка очищена (не удалена), очистите всю строку и переместите ячейки строк под ней вверх - PullRequest
0 голосов
/ 13 ноября 2018

Я действительно новичок в программировании, и у меня есть электронная таблица, над которой я работаю, с которой я мог бы помочь. Мои столбцы A и B - это два раскрывающихся меню, где B зависит от A. Есть некоторые другие столбцы, которые используют VLookUp для получения информации на основе раскрывающегося списка, и еще один столбец, в котором у меня есть простая формула. Если я уберу значение из столбца «A», я бы хотел очистить всю строку (не теряя своих формул), и я бы сместил все ячейки со значениями под ним. Я искал много способов сделать это с удалением ячеек, но я не смог найти много с их очисткой. Мой код почти работает, но выглядит довольно не элегантно, так как я использую буфер обмена. Мне также нужно очистить последнюю строку в конце, используя этот код, но когда я пытаюсь это сделать, Excel вылетает. Любой совет будет наиболее ценным. Вот мой код:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim wks As Worksheet
Dim FirstRow As Long
Dim FirstColumn As Long
Dim LastRow As Long
Dim QtyColumn As Long
Dim FormulaRange1 As Range
Dim FormulaRange2 As Range

FirstColumn = 1
QtyColumn = 4
Set wks = ActiveSheet

If Not Application.Intersect(Target, Range("A11:A26")) Is Nothing Then
   If IsEmpty(Target.Value) Then
   wks.Range("B" & Target.Row).ClearContents
   wks.Range("D" & Target.Row).ClearContents
   FirstRow = Cells(Target.Row, Target.Column).Row
   LastRow = Cells(Rows.count, 1).End(xlUp).Row
   Set FormulaRange1 = wks.Range(Cells(Target.Row, Target.Column).Offset(1, 0), wks.Cells(LastRow, "B"))
   Set FormulaRange2 = wks.Range(Cells(Target.Row, "D").Offset(1, 0), wks.Cells(LastRow, "D"))
   FormulaRange1.Copy
   wks.Range(Cells(FirstRow, FirstColumn).Address).PasteSpecial xlPasteValues
   FormulaRange2.Copy
   wks.Range(Cells(FirstRow, QtyColumn).Address).PasteSpecial xlPasteValues
   Application.CutCopyMode = False
  End If
End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...