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