本帖最后由 蓝色交响乐 于 2013-6-25 11:20 编辑
向各位老师请教:在模块中能够正常运行的VBA语句,写入Sheet和ThisWorkbook后只有部分可以正常运行,大部分都会报出“400错误”
在VBA方面,我是一个初学者,从录制宏开始接触VBA,之前为了方便工作自己搞了这个小工具,运行的环境一直是“模块”方式,但是由于“模块”方式在文件拷贝、转移的情况下太不方便,所以想把代码直接写进Sheet和ThisWorkbook 里,但试运行后就出现了目前的问题。万望各位老师指教!
例句:
一、可以正常运行的
Sub About()
'
' 关于信息 Macro
'
MsgBox "……"
End Sub
二、不能正常运行的
Sub ToWrite()
'
' 进入指定页面位置 Macro
'
Sheets("write").Range("A4").Select
End Sub
三、能够部分正常运行的
Sub NextMonth()
'
' 将月末相关数据另存出“月结转”文件,以便进行月末数据结转 Macro
'
'提示确认已经打开数据转移的中介文件,以免出现报错。
msg = MsgBox("您正在准备进行月末数据结转,确认结转吗?" & Chr(13) & "选择是:立刻开始结转" & Chr(13) & "选择否:暂不执行结转", vbYesNo + 64)
'完成《月末结转数据备份表》的创建
If msg = vbYes Then
Workbooks.Add
Sheets("Sheet1").Select
Sheets("Sheet1").Name = "menu"
Sheets("Sheet2").Select
Sheets("Sheet2").Name = "record"
Sheets("Sheet3").Select
Sheets("Sheet3").Name = "inventory check"
ChDir "C:\Documents and Settings\Administrator\桌面"
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\Administrator\桌面\库存管理系统月结转出.xlsx", FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
(以上可以正常运行,以下就不行了,直接出现‘400错误’提示)
Windows("库存管理系统.xlsm").Activate
Sheets("menu").Range("A3:A3000").Select
Selection.Copy
Sheets("inventory check").Range("A3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("menu").Range("G3:G3000").Select
Selection.Copy
Sheets("inventory check").Range("H3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'向《月末结转数据备份表》复制需要结转的相关数据
'(1)物资品目
Sheets("menu").Range("A2:F9999").Select
Selection.Copy
Windows("库存管理系统月结转出.xlsx").Activate
Sheets("menu").Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A65536").End(xlUp).Offset(1, 0).Select
Windows("库存管理系统.xlsm").Activate
'(2)销售记录
Sheets("record").Range("A2:N9999").Select
Selection.Copy
Windows("库存管理系统月结转出.xlsx").Activate
Sheets("record").Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A65536").End(xlUp).Offset(1, 0).Select
Windows("库存管理系统.xlsm").Activate
'(3)月末库存
Sheets("inventory check").Range("A2:H9999").Select
Selection.Copy
Windows("库存管理系统月结转出.xlsx").Activate
Sheets("inventory check").Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveWorkbook.Save
'执行数据清空,为物资品目和月末库存结转数据回填做准备
Windows("库存管理系统.xlsm").Activate
Sheets("record").Range("A3:N9999").ClearContents
Range("A3").Select
Sheets("sales check").Range("B4,D4,H4,J4,L4").ClearContents
ActiveSheet.Range("$A$7:$A$10005").AutoFilter Field:=1
ActiveWindow.LargeScroll Down:=0
Range("A8:N10005").ClearContents
Range("B4").Select
Sheets("write").Range("A4").Select
Sheets("inventory check").Range("A3:A9999").ClearContents
Range("A3").Select
'回填月末库存结转数据
Windows("库存管理系统月结转出.xlsx").Activate
Sheets("inventory check").Range("A2:C9999").Select
Selection.Copy
Windows("库存管理系统.xlsm").Activate
Sheets("record").Range("B3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("库存管理系统月结转出.xlsx").Activate
Sheets("inventory check").Range("D2:D9999").Select
Selection.Copy
Windows("库存管理系统.xlsm").Activate
Sheets("record").Range("G3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("库存管理系统月结转出.xlsx").Activate
Sheets("inventory check").Range("E2:F9999").Select
Selection.Copy
Windows("库存管理系统.xlsm").Activate
Sheets("record").Range("E3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("库存管理系统月结转出.xlsx").Activate
Sheets("inventory check").Range("G2:G9999").Select
Selection.Copy
Windows("库存管理系统.xlsm").Activate
Sheets("record").Range("H3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("库存管理系统月结转出.xlsx").Activate
Sheets("inventory check").Range("H2:H9999").Select
Selection.Copy
Windows("库存管理系统.xlsm").Activate
Sheets("record").Range("N3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A65536").End(xlUp).Offset(1, 0).Select
Sheets("menu").Range("A3").Select
Sheets("face").Range("O6").Select
ActiveWorkbook.Save
Workbooks("库存管理系统月结转出.xlsx").Close
MsgBox "月末结转成功!您可以继续《库存管理系统》的其他操作。", vbInformation
Else: If msg = vbCancel Then Exit Sub
End If
End Sub