Я пытаюсь написать код, который будет искать в первых 30 столбцах и строках слова Total
и Area
. Я хочу сохранить расположение этих слов в переменной, а затем использовать эти переменные, чтобы очистить диапазон, относящийся к ним, и тогда он будет проходить по всем рабочим листам.
Я пытался использовать преобразователь цифр в буквы, который я нашел в Интернете, для хранения номера столбца, и я думаю, что именно в этом и заключается моя проблема.
Вот код, который я нашел онлайн:
Function Col_Letter(lngCol As Long) As String
Dim vArr
vArr = Split(Cells(1, lngCol).Address(True, False), "$")
Col_Letter = vArr(0)
End Function
и мой код:
Private Sub Clear_Click()
Dim LastRowH As Integer
Dim ClearContent As Boolean
Dim ws As Worksheet
Dim testrange As Range
Dim Cell1 As Range
Dim Celln As Range
ClearContent = False
For Each ws In ActiveWorkbook.Worksheets
'FINDS RANGE
For i = 1 To 30
For j = 1 To 30
If ActiveWorkbook.Sheets(ws).Range(Col_Letter(CLng(i)) & j).Value = "Total" Then
Cell1 = ws.Range(Col_Letter(CLng(i + 1)) & j)
End If
If ActiveWorkbook.Sheets(ws).Range(Col_Letter(CLng(i)) & j).Value = "Area" Then
Celln = ws.Range(Col_Letter(CLng(i + 1)) & j - 1)
End If
Next
Next
'...<more code here>...
If ClearContent = True Then
'...<more code here>...
ws.Range(Cell1 & ":" & Celln).ClearContents
End If
Next ws
End Sub
Когда я запускаю код, я получаю сообщение об ошибке:
Ошибка времени выполнения '13': несоответствие типов
Я пробовал пару других методов, но не могу заставить его работать.
Любая помощь приветствуется, заранее спасибо:)
UPDATE
Я попытался заменить циклы for в коде, чтобы использовать функцию «Ячейки», следующим образом:
For i = 1 To 30
For j = 1 To 30
If Sheets(ws).Cells(j, i).Value = "Total" Then
Set Cell1 = ws.Cells(j - 1, i + 1)
End If
If Sheets(ws).Cells(j, i).Value = "Area" Then
Set Celln = ws.Cells(j, i + 1)
End If
Next
Next
Но я все еще получаю Несоответствие типов