在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中没有
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)