В основном у меня есть код vba, который работает очень хорошо. Но когда я пытаюсь скопировать его на другую командную кнопку, просто меняя имя листа и дополнительное имя, он не работает, и появляется сообщение «Несоответствие типов». Это код VBA, который работает правильно.
Sub hide_Rows_by_cell_value()
Dim wb As Workbook, CompInfo As Worksheet, MufgClient As Worksheet
Dim srcCl As Range, lr As Long, FltCol As Range, cl As Range, hideRng As Range
Set wb = ThisWorkbook
Set CompInfo = wb.Sheets("Company Information")
Set MufgClient = wb.Sheets("MUFG Client")
Set srcCl = CompInfo.Cells(18, 9)
arr = Split(srcCl.Value, ",")
lr = MufgClient.Range("AC" & MufgClient.Rows.Count).End(xlUp).Row
Set FltCol = MufgClient.Range("AC3:AC" & lr) '2nd Row contains table headers
For Each cl In FltCol
chk = 0
For i = 0 To UBound(arr)
chk = chk + InStr(1, cl.Value, Trim(arr(i)), vbTextCompare)
Next
If chk = 0 Then
If hideRng Is Nothing Then
Set hideRng = cl
Else
Set hideRng = Union(hideRng, cl)
End If
End If
Next
hideRng.EntireRow.Hidden = True
End Sub
А это код VBA, который говорит о несоответствии типов
Sub hide_rows_by_cell_value2()
Dim wb As Workbook, MUFGInfo As Worksheet, LendingFunding As Worksheet
Dim srcCl As Range, lr As Long, FltCol As Range, cl As Range, hideRng As Range
Set wb = ThisWorkbook
Set MUFGInfo = wb.Sheets("MUFG Information")
Set LendingFunding = wb.Sheets("Lending & Funding")
Set srcCl = MUFGInfo.Cells(18, 9)
arr = Split(srcCl.Value, ",")
lr = LendingFunding.Range("AC" & LendingFunding.Rows.Count).End(xlUp).Row
Set FltCol = LendingFunding.Range("AC3:AC" & lr) '2nd Row Contains table headers
For Each cl In FltCol
chk = 0
For i = 0 To UBound(arr)
chk = chk + InStr(1, cl.Value, Trim(arr(i)), vbTextCompare)
Next
If chk = 0 Then
If hideRng Is Nothing Then
Set hideRng = cl
Else
Set hideRng = Union(hideRng, cl)
End If
End If
Next
hideRng.EntireRow.Hidden = True
End Sub
Несоответствие находится в
chk = chk + InStr(1, cl.Value, Trim(arr(i)), vbTextCompare)
Я уже проверил ячейку, и она все еще верна 18,9 (строка 18, столбец i). Я также делаю диапазон таким же, как и в первом коде vba, поскольку содержимое листа представляет собой скопированную пасту с предыдущего листа.
Любая помощь будет принята с благодарностью.
Заранее большое спасибо.