Office中国论坛/Access中国论坛
标题:
有关excel的宏问题求教!!!
[打印本页]
作者:
wuzhigui
时间:
2005-11-16 18:07
标题:
有关excel的宏问题求教!!!
有一段宏,一按快捷键就报错;
运行时出错'1004'
类range的select方法无效.
进入basic调试时出现有一行错误,不知是什么原因,以下是程序原文:
Sub 打印开机单()
'
' p Macro
' PK1 记录的宏 2000-2-20
'
' 快捷键: Ctrl+p
'
If Date < DateValue("2005/05/01") Then
'COPY 格式
Sheets(2).Select
Cells.Select
Selection.Copy
Sheets(1).Select
Cells.Select
ActiveSheet.Paste
'输入单号
VC = InputBox(PROMPT:="请输入单号,此操作将生成开机单。。。。。。。。。。。请输入单号,此操作将生成开机单。。。。。。。。。。。请输入单号,此操作将生成开机单。。。。。。。。。。。。", Title:="请输入单号", Default:="D0")
'调用数据
' Worksheets(3).ACTIVE
Worksheets(3).Select
For B = 1 To 10000
If IsEmpty(Cells(B, 1)) * IsEmpty(Cells(B, 2)) * IsEmpty(Cells(B, 3)) * IsEmpty(Cells(B, 4)) Then
ta = B - 1
Exit For
End If
Next B
For i = 2 To ta
If Cells(i, 3) = VC Then
Worksheets(3).Cells(i, 1).Select
With Selection.Interior
.ColorIndex = 34
.Pattern = xlSolid
End With
If Worksheets(3).Cells(i, 16) = "2" Then
Worksheets(1).Cells(31, 1) = "1.圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。"
ElseIf Worksheets(3).Cells(i, 16) = "圆" Then
Worksheets(1).Cells(31, 1) = "1.圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。"
ElseIf Worksheets(3).Cells(i, 16) = "圆筒" Then
Worksheets(1).Cells(31, 1) = "1.圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。"
ElseIf Worksheets(3).Cells(i, 16) = "圆筒。" Then
Worksheets(1).Cells(31, 1) = "1.圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。"
ElseIf Worksheets(3).Cells(i, 16) = "圆筒." Then
Worksheets(1).Cells(31, 1) = "1.圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。"
ElseIf Worksheets(3).Cells(i, 16) = "园" Then
Worksheets(1).Cells(31, 1) = "1.圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。"
ElseIf Worksheets(3).Cells(i, 16) = "园筒" Then
Worksheets(1).Cells(31, 1) = "1.圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。圆筒。"
Else
Worksheets(1).Cells(31, 1) = "1.抽开幅线。"
End If
If Worksheets(3).Cells(i, 17) = "2" Then
Worksheets(1).Cells(32, 1) = "2.自对办开机,附办。"
ElseIf Worksheets(3).Cells(i, 17) = "3" Then
Worksheets(1).Cells(32, 1) = "2.自对单开机。"
Else
Worksheets(1).Cells(32, 1) = "2.交工艺检查对单对办后开机。一定要对过业务部定货单。"
End If
If Worksheets(3).Cells(i, 1) = "S" Then
CMM = "单面机。"
ElseIf Worksheets(3).Cells(i, 1) = "D" Then
CMM = "双面机。"
ElseIf Worksheets(3).Cells(i, 1) = "R" Then
CMM = "罗纹机。"
ElseIf Worksheets(3).Cells(i, 1) = "T" Then
CMM = "双卫衣机。"
ElseIf Worksheets(3).Cells(i, 1) = "V" Then
CMM = "反包毛巾机。"
ElseIf Worksheets(3).Cells(i, 1) = "W" Then
CMM = "正包毛巾机。"
ElseIf Worksheets(3).Cells(i, 1) = "C" Then
CMM = "工业布机台。"
ElseIf Worksheets(3).Cells(i, 1) = "F" Then
CMM = "横机。"
ElseIf Worksheets(3).Cells(i, 1) = "H" Then
CMM = "144F单面机。"
ElseIf Worksheets(3).Cells(i, 1) = "A" Then
CMM = "自动间单面机。"
Else
CMM = "机。"
End If
Worksheets(1).Cells(3, 2) = Worksheets(3).Cells(i, 2)
Worksheets(1).Cells(4, 2) = Worksheets(3).Cells(i, 3)
Worksheets(1).Cells(5, 2) = Worksheets(3).Cells(i,
作者:
红池坝
时间:
2005-11-16 19:52
估计是因为第一个IF语句(If Date < DateValue("2005/05/01") )的条件不成立,直接就运行了你的最后一句代码,也就是出错的Worksheets(1).Cells(11, 2).Select。而这时因为Worksheets(1)工作表尚未被激活,所以,无法直接执行.Cells(11, 2).Select。建议,把这句分成两句:Worksheets(1).ActiveCells(11, 2).Select还有,你的代码非常之不简洁,执行效率一定非常之低下。建议学会用用Case代替Else IF嵌套,用With来减少工作表引用,用变量和循环来简化数据写入的单元格的代码。
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3