Я новичок в VBA. Я работаю над проектом, который проверяет длину и формат данных, введенных в лист. Я собираюсь расширить код, включив проверку всех потенциальных заголовков (номера телефонов, адреса, суффиксы и т. Д.). Тем не менее, я получаю ошибку 1004 во время выполнения этой строки кода «Столбцы (col) .NumberFormat =« 0 »» в подписи phonenumbers. Если я прокомментирую эту строку, я получаю ту же ошибку на следующей строке. Поиск помощи/объяснение причин, по которым это происходит и как их решить.Ошибка времени выполнения '1004'
Спасибо!
Option Explicit
Sub DataVerification()
Dim i As Long
Dim rw As Long
Dim col As Long
Dim rng As Range
'Set cell background color to nothing
ActiveSheet.Cells.Interior.ColorIndex = xlNone
'loop through header row A10:F10 to determine which column needs validation
For i = 1 To 6
With Sheets("Sheet2")
If UCase(.Cells(10, i).Value) = "PHONE NUMBERS" Then
Call PhoneNumbers
ElseIf UCase(.Cells(10, i).Value) = "ADDRESSES" Then
Call Addresses
ElseIf UCase(.Cells(10, i).Value) = "SUFFIXES" Then
Call Suffixes
Else
MsgBox ("No data entered")
Exit For
End If
End With
Next i
'Phone numbers text found?
If col = 0 Then
MsgBox "Phone Numbers Header not found"
Exit Sub
End If
'Set column format to number
Columns(col).NumberFormat = "0"
'set up the start range, loop until we find an empty cell
'tidy up
Set rng = Nothing
End Sub
Sub PhoneNumbers()
Dim i As Long
Dim rw As Long
Dim col As Long
Dim rng As Range
col = i
'Set column format to number
Columns(col).NumberFormat = "0"
Set rng = Sheets("Sheet2").Cells(11, col)
Do Until rng = ""
If Not IsNumeric(rng.Value) Or Len(rng.Value) <> 11 Then
'highlight cell
rng.Interior.ColorIndex = 3 'red
End If
'get next row
Set rng = rng.Offset(1, 0)
Loop
End Sub
это потому, что вы используете 'цв = i', но' i' в тот момент, равный '0' (потому что вы не инициализируются его). И нет столбца с индексом '0' –
Чтобы исправить это, вы можете изменить свой' sub', чтобы принять параметр: 'Sub PhoneNumbers (i as Long)', а затем вызвать его в цикле следующим образом: 'Call PhoneNumbers (i)'. Но не забудьте удалить 'Dim i As Long' из' PhoneNumbers' под –