怎样在VBA指令中调用Excel函数

怎样在VBA指令中调用Excel函数,第1张

在VBA指令中调用

Excel函数

,可以在函数前面加WorkSheetFunction来调用,如:

WorkSheetFunctionMax(Range("A1:

A10

"))——取单元A1:A10里的最大值;

WorkSheetFunctionAverage(Range("A1:A10"))——取单元A1:A10里的平均值。

Sub ttt()

Cells(1, 2) = WorksheetFunctionMax(Range("A1:A10"))

Cells(2, 2) = WorksheetFunctionAverage(Range("A1:A10"))

End Sub

本示例示范如何调用宏表“Mycustomxlm”(

必须先打开此宏表

〕中定义的宏函数

My_Func_Sum。此函数带两个数值型参数(此例中为

1

5)。

mySum

=

ApplicationRun("MYCUSTOMXLM!My_Func_Sum",

1,

5)

MsgBox

"Macro

result:

"

&

mySum

注意括号里面的文字:必须先打开此宏表,这意味着在使用“Mycustomxlm"中定义的宏函数My_Func_Sum之前,需要先把Mycustomxlm打开

excel vba调用windows API 快速查找所选择的文件

excel选中文件名清单、自动从“a1"文件夹中查找相应的文件。

ShellExecuteA,DataObject,Clipboard,find,SendKeys

Private Declare Function ShellExecute Lib "shell32dll" Alias _

"ShellExecuteA" (ByVal hwnd As Long, ByVal lpszOp As _

String, ByVal lpszFile As String, ByVal lpszParams As String, _

ByVal lpszDir As String, ByVal FsShowCmd As Long) As Long

Const SW_SHOW = 5

Sub test()

SelectionCopy

Dim MyData As DataObject

Dim sTemp As String, s As String

Set MyData = New DataObject

MyDataGetFromClipboard

sTemp = MyDataGetText

s = Replace(sTemp, vbCrLf, ";")

s = Replace(s, vbTab, ";")

MyDataSetText (s)

MyDataPutInClipboard

ShellExecute 0&, "find", Range("a1"), _

vbNullString, vbNullString, SW_SHOW

ApplicationWait (Now + TimeValue("0:00:02"))

SendKeys s & "{ENTER}"

End Sub

1、首先,在Excel表格中输入如图内容,以方便在VBA中进行读取和处理 *** 作。

2、进入VBA环境,可以按键盘上的“Alt+F11”进入。右击“Microsoft Excel对象”,从其右键菜单中选择“插入”-“用户窗体”项。

3、接着向窗体中拖动一个“标签”和一个“按钮”,右击“按钮”,从其扩展菜单中选择“属性”项。

4、在打开的“属性”面板中对“按钮”和“标签”进行相关设置,其中包括“名称”和“标题”。

5、双击“获取Excel数据”按钮,输入以下代码:Private Sub GetDate_Click() Dim i As Integer Dim j As String For i = 2 To 8 '数据位于2至8行 j = j & Chr(10) & Chr(13) & Sheets(1)Cells(i, 1) & " 。

6、 & Sheets(1)Cells(i, 2) '读取每行数据 '格式化输出 Next i Label1Caption = Label1Caption & jEnd Sub。

7、双击“Sheet1”工作表,在d出的代码编辑窗口中输入如下代码:Private Sub  Worksheet

-Activate()UserForm1ShowEnd Sub。

8、返回Excel表格,激活Sheet1工作表,就可以看到窗口d出,同时点击“获取Excel数据”按钮,就可以读取Excel中的数据啦。

答:有2种办法。

1、把myChoice定义为模块及变量。也就是把Sub MsgYesNo()里的

“Dim myChoice As Integer”这句放到模块顶端。

2、把Sub MsgYesNo()改为函数模块,如

Function MsgYesNo()

Dim question As String

Dim myButtons As Integer

Dim myTitle As String

Dim myChoice As Integer

question = "The file localcnf exists,Do you want to overwrite it"

myButtons = vbYesNo + vbQuestion + vbDefaultButton2

myTitle = "Overwrite"

MsgYesNo = MsgBox(question, myButtons, myTitle)

End Function

然后调用语句写出:

Call MsgYesNo

If MsgYesNo = 6 Then

GoTo Line1

Else

GoTo Line2

工具:Microsoft

Office

Excel

2007

办公软件

步骤:

1、打开Microsoft

Office

Excel

2007

办公软件,击

“开始”

->“Excel

选项”。

2、选择“常规”选项卡,并在右侧点选“在功能区显示‘开发工具’选项卡”,并单击“确定"。

3、在单元格A1中输入“弧度”,单元格B1中输入“角度”,单元格A2中输入“314”,然后在单元格B2中输入公式"=DEGREES(A2)"在按下回车后,该单元格输出结果为1799087477。注:DEGREES函数的作用是将弧度转化为角度。

4、用VBA实现同样的功能。点击“开发工具”选项卡,单击“Visual

Basic”,启动Visual

Basic编辑器。

5、在“Microsoft

Excel

对象”上点鼠标右键,依次点击“插入”

->

“模块”,创建“模块1”,并在该模块中输入内容:

Sub

转换()

MsgBox

ApplicationWorksheetFunctionDegrees(314)

End

Sub

点击“运行子过程/用户窗体”按钮,在d出的对话框中选择“转换”,然后点击“运行”按钮。

6、程序d出对话框,结果与在Excel中利用公式输出的结果一样,只是有效数字的位数不一样,这可以根据需要加以取舍。

一部分excel工作表函数可以直接在VBA中调用如myData = ApplicationWorksheetFunctionCount(Range("A2:D5"))相当于Excel中=Count(A2:D5)的结果。另一部分与一些变化不可以直接调用如 Excel中的=IF()函数,在VBA中用IIF 函数还有一些函数 如 =row() VBA 中变为 row 属性有的函数在VBA中没有

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/11678224.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存