2022-11-05 07:21来源:m.sf1369.com作者:宇宇
1.适当的学习vb的基本语法,因为excel自定义函数需要用到vba,vba我们可以理解为excel对vb的应用,和vb的语法一致。
2.创建一个excel文件命名为“myfunction.xlsx”,然后打开该文件将其另存为“myfunction.xlsm”,然后打开该文件。
3.同时按ALT+F11进入EXCEL VBA的编辑模式,点“插入”,选择“模块”,创建一个新的模块,用来进行代码的编辑。
4.我们写一个名叫tool1的函数
Function tool1(a, b) As Double
On Error Resume Next
tool1 = (a + b) / 2
End Function
在写一个名叫tool2的函数
Function tool2(a, b) As Double
On Error Resume Next
If a > b Then
tool2 = a
Else
tool2 = b
End If
End Function 然后保存一下,关闭“myfunction.xlsm”。
5.打开任意一个EXCEL文件,依次选择“文件”-“选项”-“加载项”,“管理”选择为“EXCEL加载项” -“转到”,出现“加载宏”对话框,选择之前做好的“myfunction.xlsm”文件,点击“确定”。以后我们自制的EXCEL工具箱在每次打开EXCEL时就自动加载了。我们可以随时使用自己自定义的公式。当有新的函数需求时,也可以在“myfunction.xlsm”中继续添加。
6.使用自定义的函数
1.桌面上第一章中的每个工作簿名称放置到工作表中。
2.新建一个工作簿,将其命名为“第一章目录”,按Alt+f11组合键,打开宏界面。
3.在vba中,单击插入按钮,点击菜单插入下的模块,即可新建模块,系统默认为模块。
4.完成上述步骤后,输入代码?
5.返回到名为“第一章目录”呢工作簿,然后按“aw+f8”,组合键调出“宏”对话框。
6.单击“宏对话框”中的“执行”按钮,“宏”对话框自动关闭,代码自动执行,即第一页中的每个文件夹名称都显示在sheet1中,可以根据需要调整格式。
方法/步骤
第一,新建一个空白EXCEL2003版的文档,然后点击视图——工具栏——窗体,方便使用命令按钮来操作宏。
第二,拖出命令按钮。在窗体工具栏那里点击选择命令按钮——在EXCEL表格那里画一个方框命令按钮就出来了。
第三,重命名命令按钮。为了方便操作,命令按钮以它的用途来命名,点击命令按钮的文字框——删除原有的文字——输入:判定重复数据。这样就重新命名好了。
第四,打开命令按钮代码编辑窗口:右击命令按钮——指定宏——新建——这时就会弹出代码编辑窗口出来。
第五,在代码编辑窗口那里,可以更sub开头的宏名称,修改容易明白是什么用途的宏,也可以不用修改——然后在中间那里输入如下代码:
Dim arr, brr()
Dim I As Integer, j As Integer
Dim Dict As Object
On Error Resume Next
Set Dict = CreateObject("scripting.dictionary")
With ActiveSheet
arr = Intersect(.UsedRange, .Columns(1))
For I = 1 To UBound(arr)
If Dict.exists(arr(I, 1)) Then
Dict.Item(arr(I, 1)) = Dict.Item(arr(I, 1)) + 1
Else
Dict.Item(arr(I, 1)) = 1
End If
Next I
For I = 1 To UBound(arr)
j = j + 1
ReDim Preserve brr(1 To j)
brr(j) = IIf(Dict.Item(arr(I, 1)) = 1, "唯一", "重复")
Next I
.Columns(2).ClearContents
.Range("b1").Resize(UBound(brr), 1) = WorksheetFunction.Transpose(brr)
End With
第六,编辑完成后关闭退出VBA编辑器——在A列输入数据——输入完成后,点击判定重复数据命令按钮,这时就会在B列显示重复,如果是唯一就会显示唯一
、用VBA在单元格中输入普通公式
Sub t1()
Range("d2") = "=b2*c2" "很简单的吧,就是以值的方式赋给指定的单元格就可以了
End Sub
Sub t2()
Dim x As Integer "先声明一个整型变量 x,这个变量的默认值就是 0
VBA 中对名称的基本用法:
1、 创建名称
可以使用下面的代码在当前工作簿中创建名称。
2、重命名已有的名称
但这种方法只能在单元格或单元格区域中进行重命名使用,而不能重命名代表公式、数组和字符串的名称。
3、改变所选区域所命名的名称的引用区域
代码将原来所选区域的名称的引用区域改为单元格区域B3:C4,即该名称所代表的区域已变为B3:C4,原来命名区域名称被取消。
4、提取命名区域
将工作表中名称MyName所代表的单元格区域的背景设置为红色。
5、隐藏名称
将隐藏所创建的名称。注意,如果再创建的名称与所隐藏的名称相同,则被隐藏的名称将被覆盖。
6、删除名称
注意,当前工作簿中重命名已有名称和删除名称时,要注意所要操作的名称是全局名称还是局部名称。如果为局部名称,则必须在代码中加上该名称所在工作表的引用。
在工作表窗口中菜单->工具->宏->Visual Basic 编辑器( 或者按快捷键Alt+F11)会 打开VBA编辑器在VBA编辑器窗口中菜单->插入->用户窗体 会插入一个用户窗体 然后就可以编写窗体代码以及在窗体中放入控件.如果要显示用户窗体 可以新建一个宏 并输入下面这句: userform1.show其中userform1 是窗体控件的名称例如:sub test() userform1.showend sub当执行这个宏时 用户窗体会显示
代码如下:
Sub 宏1() for i=2 to Sheets.Count Sheets(i)=trim(i-1) next iEnd Sub
Excel定义名称的快捷键Ctrl+F3
打开excel表格
选中数据区域,也就是要定义名称的数据部分
然后按快捷键Ctrl+F3,打开对话框, 确定新建名称
继续确定
然后在名称框输入对应名称,即可选中数据区域
最后保存文件
在工作表标签上击右键,查看代码。出来VBA窗口在VBA窗口菜单---插入----模块在左侧找到模块1,双击模块1,在右侧模块代码窗口中粘贴以下代码然后关掉VBA窗口,Alt+F8运行代码中的宏,就行了。Sub重命名工作表()DimsHAsWorksheetForEachsHInWorksheetsIfsH.[b2]<>""ThensH.Name=sH.[b2]EndIfNextEndSub
1、桌面上第一章中的每个工作簿名称放置到工作表中。
2、新建一个工作簿,将其命名为“第一章目录”,按alt+f11组合键,打开宏界面。
3、在VBA中,单击插入按钮,点击插入菜单下的模块,即可新建模块,系统默认为模块。
4、使用do~~loop循环语句,在VBA中输入。
5、返回名为“第一章目录”的工作簿中,按alt+f8组合键,弹出宏对话框。
6、点击宏对话框中的执行按钮,宏对话框自动关闭,代码自动执行,即第一章中的每个文件夹名称全部显示在工作表sheet1中。最后根据自己的需要调整格式即可。