Mat*_*dge 0 excel vba excel-vba
作为自学成才,我还没有学到有关Excel VBA的所有知识.地狱说实话,我知道一些基本知识,但不是我可能应该做的那么多,所以这个问题虽然可能是一个通用的基本问题,但可能应该知道VBA的人知道,但在我学习我需要的东西的情况下前进......所以我需要一个解释.
什么时候需要定义Sub或Function?为什么需要定义Sub或Function?定义Sub或Function的目的是什么?
我只问,因为这个:
Option Explicit
Sub OpenOrderReportExport()
Dim wsJL As Worksheet 'Jobs List
Dim wsPOT As Worksheet 'PO Tracking
Dim wsTNO As Worksheet 'Tel-Nexx OOR
Dim wbBK2 As Workbook 'New Workbook
Dim wsWS1 As Worksheet 'Sheet1
Dim wsWS2 As Worksheet 'Sheet2
Dim wsWS3 As Worksheet 'Sheet3
Set wsJL = Sheets("Jobs List") 'Jobs List
Set wsPOT = Sheets("PO Tracking") 'PO Tracking
Set wsTNO = Sheets("Tel-Nexx OOR") 'Tel-Nexx OOR
Set wbBK2 = Workbook("Book2") 'New Workbook
Set wsWS1 = Sheets("Sheet1") 'Sheet1
Set wsWS2 = Sheets("Sheet2") 'Sheet2
Set wsWS3 = Sheets("Sheet3") 'Sheet3
Application.ScreenUpdating = False ' Prevents screen refreshing.
CurrentFile = ThisWorkbook.FullName
NewFileType = "Excel Files 2007 (*.xlsx)"
NewFile = Application.GetSaveAsFilename(InitialFileName:="Open Order Log - " & Format(Date, "dd-mm-yyyy") & ".txt", fileFilter:=NewFileType)
End Sub
Run Code Online (Sandbox Code Playgroud)
为什么需要定义这个子?我把它作为一个标准模块,并设置它,以便一旦按下按钮,我将能够将几页移动到一个新的工作簿,删除空白的工作簿,并从那里使用保存功能你告诉它在哪里保存.
我还有很长的路要走,但我想测试一下保存功能,然后从那里开始,因为对我来说这将是最困难的事情.
所以,如果不解决我的整个难题,我想知道为什么需要定义这样的东西?以及如何定义......如果有人能给出答案,我们将非常感激.
您的帖子围绕以下问题展开,让我逐一解释.
你的问题
VBA支持两种类型的过程:子过程和函数过程.
甲Sub过程由一系列的语句的,并且可以在许多例如方式执行
Sub Sample()
MsgBox "Hello Matt Ridge"
End Sub
Run Code Online (Sandbox Code Playgroud)
要么
Sub Sample()
Sample1 "Hello Matt Ridge"
End Sub
Sub Sample1(s As String)
MsgBox s
End Sub
Run Code Online (Sandbox Code Playgroud)

另一方面,VBA 函数返回单个值或可能返回数组.可以从另一个VBA过程调用函数,也可以在工作表公式中使用该函数.例如
Sub Sample()
Dim Ret As String
Ret = GreetUser("Matt Ridge")
MsgBox Ret
End Sub
Public Function GreetUser(User As String)
GreetUser = "Hello " & User
End Function
Run Code Online (Sandbox Code Playgroud)
也可以在工作表中调用相同的函数.例如,单元格A1具有Matt Ridge和在单元格B1中键入此公式时
=GreetUser(A1)
Run Code Online (Sandbox Code Playgroud)
你将进入Hello Matt RidgeCell B1.请参见下面的快照.

现在看看你的代码.
当你说
Dim wbBK2 As Workbook
Run Code Online (Sandbox Code Playgroud)
然后VBA希望你按照enderland的说法相应地设置变量.在您的情况下,VBA正在寻找WORKBOOKS()哪种内置方法.但是当VBA看到WORKBOOK()它无法识别时,它会尝试SUB PROCEDURE在模块中找到它(希望你可能在某处找到它),当它找不到它时,它会弹出该错误.:)
希望这能回答你的问题.
| 归档时间: |
|
| 查看次数: |
15920 次 |
| 最近记录: |