Vba 运行时错误';1004';
我是VBA新手。我正在进行一个项目,该项目将验证输入工作表的数据的长度和格式。我将对代码进行扩展,以包括对所有潜在标题(电话号码、地址、后缀等)的验证。但是,我在这一行代码中收到运行时错误1004,“Columns(col).NumberFormat=“0”,在phonenumbers子部分。如果我注释掉这一行,我在下一行收到相同的错误。寻求帮助/解释为什么会发生这种情况以及如何解决 谢谢Vba 运行时错误';1004';,vba,runtime-error,Vba,Runtime Error,我是VBA新手。我正在进行一个项目,该项目将验证输入工作表的数据的长度和格式。我将对代码进行扩展,以包括对所有潜在标题(电话号码、地址、后缀等)的验证。但是,我在这一行代码中收到运行时错误1004,“Columns(col).NumberFormat=“0”,在phonenumbers子部分。如果我注释掉这一行,我在下一行收到相同的错误。寻求帮助/解释为什么会发生这种情况以及如何解决 谢谢 Option Explicit Sub DataVerification() Dim i As L
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
选项显式
子数据验证()
我想我会坚持多久
变暗rw为长
暗色如长
变暗rng As范围
'将单元格背景色设置为“无”
ActiveSheet.Cells.Interior.ColorIndex=xlNone
'循环通过标题行A10:F10以确定需要验证的列
对于i=1到6
附页(“第2页”)
如果UCase(.Cells(10,i).Value)=“电话号码”,则
电话号码
ElseIf UCase(.Cells(10,i).Value)=“ADDRESSES”然后
呼叫地址
ElseIf UCase(.Cells(10,i).Value)=“后缀”然后
调用后缀
其他的
MsgBox(“未输入数据”)
退出
如果结束
以
接下来我
'找到电话号码文本?
如果col=0,则
MsgBox“未找到电话号码标题”
出口接头
如果结束
'将列格式设置为数字
列(列)。NumberFormat=“0”
'设置起始范围,循环直到找到空单元格
“收拾
设置rng=无
端接头
子电话号码()
我想我会坚持多久
变暗rw为长
暗色如长
变暗rng As范围
col=i
'将列格式设置为数字
列(列)。NumberFormat=“0”
设置rng=板材(“板材2”)。单元格(11,col)
直到rng=“”
如果不是数字(rng.Value)或Len(rng.Value)11,则
'突出显示单元格
rng.Interior.ColorIndex=3'红色
如果结束
“到下一排
设置rng=rng偏移量(1,0)
环
端接头
在代码中,列为零。列从索引1开始,请尝试以下操作:
Col = 1
'Set column format to number
Columns(col).NumberFormat = "0"
这是因为您正在使用
col=i
,但i
此时等于0
(因为您尚未初始化它)。没有索引为0
的列要修复此问题,您可以修改sub
以接受参数:sub-PhoneNumbers(i长度)
,然后按如下方式在循环中调用它调用PhoneNumbers(i)
。但是不要忘记从PhoneNumbers
sub中删除Dim i