2014-02-19 3 views
0

Я новичок в 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 
+1

это потому, что вы используете 'цв = i', но' i' в тот момент, равный '0' (потому что вы не инициализируются его). И нет столбца с индексом '0' –

+0

Чтобы исправить это, вы можете изменить свой' sub', чтобы принять параметр: 'Sub PhoneNumbers (i as Long)', а затем вызвать его в цикле следующим образом: 'Call PhoneNumbers (i)'. Но не забудьте удалить 'Dim i As Long' из' PhoneNumbers' под –

ответ

0

В вашем коде Col равно нулю. Столбцы начинаются с индекса 1, Попробуйте это:

Col = 1 
'Set column format to number 
Columns(col).NumberFormat = "0" 
+0

Большое вам спасибо! – user3328738

Смежные вопросы