У меня есть 2 макроса, которые выполняются на одном листе.Один макрос влияет только на копирование и вставку, где другой будет зависеть от заполнения пользовательской формы, границы и ввода текста из комбинированных списков / текстового поля.
По какой-то причине в рабочем листе (Ежемесячный отчет FGL), когда я вводю что-либо в следующую доступную ячейку в столбце A, предыдущая строка столбца AM (которая в качестве формулы iferror vlookup) вызовет ошибку.Это относится к любой ячейке ниже в столбце А.
Я понятия не имею, почему это происходит.Ниже приведен основной код.Если у вас есть идеи относительно того, почему это произойдет, это также поможет.
Option Explicit
Private Sub CommandButton1_Click()
Dim ColA As New Scripting.Dictionary 'Need Microsoft Scripting Runtime Reference
Dim ColB As New Scripting.Dictionary
Dim LastRow As Long
Dim Criteria1 As Boolean
Dim Criteria2 As Boolean
Dim C As Range
Dim wb As Workbook: Set wb = ThisWorkbook
With wb.Sheets("Master Fronting Room List")
LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row 'This gets the last row on column A
For Each C In .Range("A1:A" & LastRow) 'loop through the whole column
On Error Resume Next
'If you have duplicated entries this will throw an error
ColA.Add C.Value, C.Row 'add the values from column A to DictA, also store it's row for later purposes
ColB.Add C.Offset(0, 1).Value, C.Row 'add the values from column B to DictB, also store it's row for later purposes
Next C
'Criterias will give value of True if matched or False if not
Criteria1 = ColA.Exists(ComboBox2.Value) 'this is getting matched with ColA Dictionary
Criteria2 = ColB.Exists(ComboBox1.Value) 'this is getting matched with ColB Dictionary
If Criteria1 And Criteria2 Then 'SCENARIO 1
Call linepick
ElseIf Criteria1 And Not Criteria2 Then 'SCENARIO 2
.Cells(LastRow + 1, 1) = ComboBox2.Value
.Cells(LastRow + 1, 2) = ComboBox1.Value
Call linepick
.Cells(LastRow, "B").Offset(-1, 1).Resize(, 3).AutoFill .Cells(LastRow, "B").Offset(-1, 1).Resize(2, 3)
.Cells(LastRow, "A").Offset(-1, 0).Resize(2, 5).Borders.LineStyle = xlContinuous
ElseIf Not Criteria1 And Not Criteria2 Then 'SCENARIO 3
.Cells(LastRow + 1, 1) = ComboBox2.Value
.Cells(LastRow + 1, 2) = ComboBox1.Value
.Cells(LastRow, "B").Offset(-1, 1).Resize(, 3).AutoFill .Cells(LastRow, "B").Offset(-1, 1).Resize(2, 3)
.Cells(LastRow, "A").Offset(-1, 0).Resize(2, 5).Borders.LineStyle = xlContinuous
With wb.Sheets("Connection Totals")
LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(LastRow, 1) = ComboBox2.Value
.Cells(LastRow, "A").Offset(-1, 1).Resize(, 21).AutoFill .Cells(LastRow, "A").Offset(-1, 1).Resize(2, 21)
.Cells(LastRow, "A").Resize(1, 22).Borders.LineStyle = xlContinuous
End With
With wb.Sheets("Monthly FGL Report")
LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(LastRow, 1) = ComboBox2.Value
.Cells(LastRow, "AE") = TextBox1.Value
.Cells(LastRow, "AE").Offset(-1, 1).Resize(, 5).AutoFill .Cells(LastRow, "AE").Offset(-1, 1).Resize(2, 4)
.Cells(LastRow, "A").Offset(-1, 0).Resize(2, 44).Borders.LineStyle = xlContinuous
End With
End If
End With
wb.RefreshAll
Unload Me
End Sub