最简单的vba代码,实用的vba代码
EXCEL VBA 问题求高手给个简单的代码
这个简单,代码如下:
Option?Explicit
Sub?x()
????Dim?i,?r,?n,?s,?ss,?c
????For?Each?r?In?Selection.Cells
????????s?=?r.Value
????????ss?=?""
????????n?=?Len(s)
????????For?i?=?1?To?n
????????????c?=?Mid(s,?i,?1)
????????????If?Right(ss,?1)??"?"?Or?c??"?"?Then?ss?=?ss??c
????????Next?i
????????r.Value?=?ss
????Next?r
End?Sub
运行前:
运行后:
VBA 简单代码
VB的布尔运算不是短路的,就是当jan为空的时候,仍然要进行后面的判断,可能这里会报错。
建立修改为嵌套的IF,例如:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim jan As Range
For Each jan In Range("c7:I12").Cells
If jan.Value "" Then
If Format(DateSerial(2020, 1, jan.Value), "aaaa") = "星期二" Then jan.Font.ColorIndex = 5
End If
Next
End Sub
求VBA代码 初学者,求基础简单的代码^_^
代码如下。
'计数代码
Private?Sub?CommandButton1_Click()
????Range("F6").Value?=?Application.WorksheetFunction.Count(Range("A:A"))
End?Sub
'求和代码
Private?Sub?CommandButton2_Click()
????Range("G6").Value?=?Application.WorksheetFunction.Sum(Range("A:A"))
End?Sub
求VBA代码大全
1:打开所有隐藏工作表
2:循环宏
3:录制宏时调用“停止录制”工具栏
4:高级筛选5列不重复数据至指定表
5:双击单元执行宏(工作表代码)
6:双击指定区域单元执行宏(工作表代码)
7:进入单元执行宏(工作表代码)
8:进入指定区域单元执行宏(工作表代码)
9:在多个宏中依次循环执行一个(控件按钮代码)
10:在两个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码)
11:在三个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码)
12:根据A1单元文本隐藏/显示按钮(控件按钮代码)?
13:当前单元返回按钮名称(控件按钮代码)?
14:当前单元内容返回到按钮名称(控件按钮代码)?
15:奇偶页分别打印?
16:自动打印多工作表第一页?
17:查找A列文本循环插入分页符?
18:将A列最后数据行以上的所有B列图片大小调整为所在单元大小?
19:返回光标所在行数?20:在A1返回当前选中单元格数量?
21:返回当前工作簿中工作表数量?
22:返回光标选择区域的行数和列数?
23:工作表中包含数据的最大行数?
24:返回A列数据的最大行数?
25:将所选区域文本插入新建文本框?
26:批量插入地址批注?
27:批量插入统一批注?
28:以A1单元内容批量插入批注?
29:不连续区域插入当前文件名和表名及地址?
30:不连续区域录入当前单元地址?
31:连续区域录入当前单元地址?
32:返回当前单元地址?
33:不连续区域录入当前日期?
34:不连续区域录入当前数字日期?
35:不连续区域录入当前日期和时间?
36:不连续区域录入对勾?
37:不连续区域录入当前文件名?
38:不连续区域添加文本?
39:不连续区域插入文本?
40:从指定位置向下同时录入多单元指定内容?
41:按aa工作表A列的内容排列工作表标签顺序?
42:以A1单元文本作表名插入工作表?
43:删除所有未选定工作表?
44:工作表标签排序
45:定义指定工作表标签颜色?
46:在目录表建立本工作簿中各表链接目录?
47:建立工作表文本目录?
48:查另一文件的所有表名?
49:当前单元录入计算机名?
50:当前单元录入计算机用户名?
51:解除所有工作表保护?
52:为指定工作表加指定密码保护表?
53:在有密码的工作表执行代码?
54:执行前需要验证密码的宏(控件按钮代码)?
55:执行前需要验证密码的宏()?
56:拷贝A1公式和格式到A2?
57:复制单元数值?
58:插入数值条件格式?
59:插入透明批注?
60:添加文本?
61:光标定位到指定工作表A列最后数据行下一单元?
62:定位选定单元格式相同的所有单元格?
63:按当前单元文本定位?
64:按固定文本定位?
65:删除包含固定文本单元的行或列?
66:定位数据及区域以上的空值?
67:右侧单元自动加5(工作表代码)?
68:当前单元加2?
69:A列等于A列减B列?
70:用于光标选定多区域跳转指定单元(工作表代码)?
71:将A1单元录入的数据累加到B1单元(工作表代码)?
72:在指定颜色区域选择单元时添加/取消"√"(工作表代码)?
73:在指定区域选择单元时添加/取消"√"(工作表代码)?
74:双击指定单元,循环录入文本(工作表代码)?
75:双击指定单元,循环录入文本(工作表代码)?
76:单元区域引用(工作表代码)?
77:在指定区域选择单元时数值加1(工作表代码)?
78:混合文本的编号?
79:指定区域单元双击数据累加(工作表代码)?
80:选择单元区域触发事件(工作表代码)?
81:当修改指定单元内容时自动执行宏(工作表代码)?
82:被指定单元内容限制执行宏?
83:双击单元隐藏该行(工作表代码)?
84:高亮显示行(工作表代码)?
85:高亮显示行和列(工作表代码)
86:为指定工作表设置滚动范围(工作簿代码)
87:在指定单元记录打印和预览次数(工作簿代码)
88:自动数字金额转大写(工作表代码)
89:将所有工作表的A1单元作为单击按钮(工作簿代码)
90:闹钟——到指定时间执行宏(工作簿代码)
91:改变Excel界面标题的宏(工作簿代码)
92:在指定工作表的指定单元返回光标当前多选区地址(工作簿代码)
93:B列录入数据时在A列返回记录时间(工作表代码)
94:当指定区域修改时在其右侧的2个单元返回当前日期和时间(工作表代码)
95:指定单元显示光标位置内容(工作表代码)
96:每编辑一个单元保存文件
97:指定允许编辑区域
98:解除允许编辑区域限制
99:删除指定行
100:删除A列为指定内容的行
1:打开所有隐藏工作表
Sub?打开所有隐藏工作表()
Dim?i?As?Integer
For?i?=?1?To?Sheets.Count
Sheets(i).Visible?=?True
Next?i?
End?Sub
?
2:循环宏
Sub?循环()
?
?AAA?=?Range("C2")
??
?Dim?i?As?Long
??Dim?times?As?Long
??times?=?AAA?
'times代表循环次数,执行前把times赋值即可(不可小于1,不可大于2147483647)
??For?i?=?1?To?times
??Call?过滤一行
?
?If?Range("完成标志")?=?"完成"?Then
????Exit?For??
'假如名为'完成标志'的命名单元的值等于'完成',则退出循环,假如一开始就等于'完成',则只执行一次循环就退出
?
'If?Sheets("传送参数").Range("A"??i).Text?=?"完成"?Then?
Exit?For?
'假如某列出现"完成"内容则退出循环
Next?i?
End?Sub???
?????
3:录制宏时调用“停止录制”工具栏???
Sub?录制宏时调用停止录制工具栏()
??????Application.CommandBars("Stop?Recording").Visible?=?True?
End?Sub????????
4:高级筛选5列不重复数据至指定表
Sub?高级筛选5列不重复数据至Sheet2()
??????Sheets("Sheet2").Range("A1:E65536")?=?""?'清除Sheet2的A:D列
?????Range("A1:E65536").AdvancedFilter?Action:=xlFilterCopy,?CopyToRange:=Sheet2.Range(?_
?????????"A1"),?Unique:=True
??????Sheet2.Columns("A:E").Sort?Key1:=Sheet2.Range("A2"),?Order1:=xlAscending,?Header:=xlGuess,?_
OrderCustom:=1,?MatchCase:=False,?Orientation:=xlTopToBottom,?SortMethod?_
?????????:=xlPinYin?
End?Sub????????
5:双击单元执行宏(工作表代码)???
Private?Sub?Worksheet_BeforeDoubleClick(ByVal?Target?As?Range,?Cancel?As?Boolean)
If?Range("$A$1")?=?"关闭"?Then
Exit?Sub??????
Select?Case?Target.Address
?????????Case?"$A$4"
?????????????Call?宏1
?????????????Cancel?=?True
?????????Case?"$B$4"
?????????????Call?宏2
?????????????Cancel?=?True
?????????Case?"$C$4"
?????????????Call?宏3
?????????????Cancel?=?True
????????Case?"$E$4"
?????????????Call?宏4?
?????????????Cancel?=?True
?????End?Select?
End?Sub
6:双击指定区域单元执行宏(工作表代码)
Private?Sub?Worksheet_BeforeDoubleClick(ByVal?Target?As?Range,?Cancel?As?Boolean)
?????If?Range("$A$1")?=?"关闭"?Then?Exit?Sub
?????If?Not?Application.Intersect(Target,?Range("A4:A9",?"C4:C9"))?Is?Nothing?Then?Call?打开隐藏表
?End?Sub
7:进入单元执行宏(工作表代码)???
Private?Sub?Worksheet_SelectionChange(ByVal?Target?As?Range)?'以单元格进入代替按钮对象调用宏??????
If?Range("$A$1")?=?"关闭"?Then?Exit?Sub?????
Select?Case?Target.Address
??????????Case?"$A$5"?'单元地址(Target.Address),或命名单元名字(Target.Name)?
????????????Call?宏1
?????????Case?"$B$5"
?????????????Call?宏2
?????????Case?"$C$5"
?????????????Call?宏3
??????End?Select
?End?Sub
8:进入指定区域单元执行宏(工作表代码)
Private?Sub?Worksheet_SelectionChange(ByVal?Target?As?Range)
If?Range("$A$1")?=?"关闭"?Then?Exit?Sub
If?Not?Application.Intersect(Target,?Range("A4:A9","C4:C9"))?Is?Nothing?Then?Call?打开隐藏表?
End?Sub
9:在多个宏中依次循环执行一个(控件按钮代码)
Private?Sub?CommandButton1_Click()
Static?RunMacro?As?Integer
Select?Case?RunMacro
Case?0
宏1
RunMacro?=?1
Case?1
宏2
RunMacro?=?2
Case?2
宏3
RunMacro?=?0
End?Select?
End?Sub
10:在两个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码)
Private?Sub?CommandButton1_Click()
With?CommandButton1
If?.Caption?=?"保护工作表"?Then
Call?保护工作表
?.Caption?=?"取消工作表保护"?
Exit?Sub
End?If
If?.Caption?=?"取消工作表保护"?Then
Call?取消工作表保护
?.Caption?=?"保护工作表"?
Exit?Sub
End?If
End?With?
End?Sub
11:在三个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码)???
Option?Explicit??Private?Sub?CommandButton1_Click()
With?CommandButton1
If?.Caption?=?"宏1"?Then
Call?宏1
?.Caption?=?"宏2"?
Exit?Sub
End?If
If?.Caption?=?"宏2"?Then
Call?宏2
.Caption?=?"宏3"
Exit?Sub
End?If
If?.Caption?=?"宏3"?Then
Call?宏3
.Caption?=?"宏1"
Exit?Sub
End?If
End?With?
End?Sub?
12:根据A1单元文本隐藏/显示按钮(控件按钮代码)
Private?Sub?Worksheet_SelectionChange(ByVal?Target?As?Range)?
If?Range("A1")??2?Then
??CommandButton1.Visible?=?1
?Else
??CommandButton1.Visible?=?0
?End?If?
End?Sub??
Private?Sub?CommandButton1_Click()
?重排窗口?
End?Sub????????
13:当前单元返回按钮名称(控件按钮代码)???
Private?Sub?CommandButton1_Click()?
ActiveCell?=?CommandButton1.Caption?
End?Sub????????
14:当前单元内容返回到按钮名称(控件按钮代码)???
Private?Sub?CommandButton1_Click()?
CommandButton1.Caption?=?ActiveCell?
End?Sub????????
15:奇偶页分别打印???
Sub?奇偶页分别打印()?
Dim?i%,?Ps%??
Ps?=?ExecuteExcel4Macro("GET.DOCUMENT(50)")?'总页数?
MsgBox?"现在打印奇数页,按确定开始."?
For?i?=?1?To?Ps?Step?2?
ActiveSheet.PrintOut?from:=i,?To:=i?
Next?i??
MsgBox?"现在打印偶数页,按确定开始."?
For?i?=?2?To?Ps?Step?2??????
ActiveSheet.PrintOut?from:=i,?To:=i?
Next?i?
End?Sub????????
16:自动打印多工作表第一页???
Sub?自动打印多工作表第一页()?
Dim?sh?As?Integer?
Dim?x?
Dim?y?
Dim?sy?
Dim?syz??
x?=?InputBox("请输入起始工作表名字:")?
sy?=?InputBox("请输入结束工作表名字:")?
y?=?Sheets(x).Index?
syz?=?Sheets(sy).Index?
For?sh?=?y?To?syz?
Sheets(sh).Select??
Sheets(sh).PrintOut?from:=1,?To:=1?
Next?sh?
End?Sub????????
17:查找A列文本循环插入分页符???
Sub?循环插入分页符()??
'?Selection?=?Workbooks("临时表").Sheets("表2").Range("A1")?调用指定地址内容???
Dim?i?As?Long?
Dim?times?As?Long??
times?=?Application.WorksheetFunction.CountIf(Sheet1.Range("a:a"),?"分页")??????'times代表循环次数,执行前把times赋值即可(不可小于1,不可大于2147483647)?
For?i?=?1?To?times?
Call?插入分页符?
Next?i?
End?Sub
Sub?插入分页符()?????
Cells.Find(What:="分页",?After:=ActiveCell,?LookIn:=xlValues,?LookAt:=?_?
xlPart,?SearchOrder:=xlByRows,?SearchDirection:=xlNext,?MatchCase:=False)?_?????????
.Activate??????
ActiveWindow.SelectedSheets.HPageBreaks.Add?Before:=ActiveCell?
End?Sub
Sub?取消原分页()?????
Cells.Select??????
ActiveSheet.ResetAllPageBreaks?
End?Sub
18:将A列最后数据行以上的所有B列图片大小调整为所在单元大小???
Sub?将A列最后数据行以上的所有B列图片大小调整为所在单元大小()?????
Dim?Pic?As?Picture,?i??????
i?=?[A65536].End(xlUp).Row?????
For?Each?Pic?In?Sheet1.Pictures??????????
If?Not?Application.Intersect(Pic.TopLeftCell,?Range("B1:B"??i))?Is?Nothing?Then
?????????????Pic.Top?=?Pic.TopLeftCell.Top
?????????????Pic.Left?=?Pic.TopLeftCell.Left
??????????????Pic.Height?=?Pic.TopLeftCell.Height
?????????????Pic.Width?=?Pic.TopLeftCell.Width
?????????End?If
?????Next?
End?Sub
19:返回光标所在行数???
Sub?返回光标所在行数()?????
x?=?ActiveCell.Row?????
Range("A1")?=?x?
End?Sub????????
20:在A1返回当前选中单元格数量???
Sub?在A1返回当前选中单元格数量()?????
[A1]?=?Selection.Count?
End?Sub
21:返回当前工作簿中工作表数量
Sub?返回当前工作簿中工作表数量()?????
t?=?Application.Sheets.Count?????
MsgBox?t?
End?Sub????????
?
????
93:B列录入数据时在A列返回记录时间(工作表代码)
Public?Sub?Worksheet_Change(ByVal?Target?As?Range)?
If?Target.Column?=?2?Then?
Target.Offset(,?-1)?=?Now?
End?If?
End?Sub????????
94:当指定区域修改时在其右侧的2个单元返回当前日期和时间(工作表代码)???
Public?Sub?Worksheet_Change(ByVal?Target?As?Range)??
If?Not?Application.Intersect(Target,?[A1:A1000])?Is?Nothing?Then?
If?Target.Column?=?1?Then?
Target.Offset(,?1)?=?Date?
Target.Offset(,?2)?=?Time?
End?If?
End?If?
End?Sub???
Public?Sub?Worksheet_Change(ByVal?Target?As?Range)??
If?Not?Application.Intersect(Target,?[A1:A1000])?Is?Nothing?Then?
If?Target.Column?=?1?Then??
Target.Offset(,?1)?=?Format(Now(),?"yyyy-mm-dd")?
Target.Offset(,?2)?=?Format(Now(),?"h:mm:ss")?
End?If?
End?If?
End?Sub????????
95:指定单元显示光标位置内容(工作表代码)???
Private?Sub?Worksheet_SelectionChange(ByVal?T?As?Range)?
Sheets(1).Range("A1")?=?Selection?
End?Sub????????
96:每编辑一个单元保存文件???
Private?Sub?Worksheet_Change(ByVal?Target?As?Range)?
ThisWorkbook.Save?
End?Sub????????
97:指定允许编辑区域
Sub?指定允许编辑区域()??
ActiveSheet.ScrollArea?=?"B8:G15"?
End?Sub????????
98:解除允许编辑区域限制???
Sub?解除允许编辑区域限制()?
ActiveSheet.ScrollArea?=?""?
End?Sub????????
99:删除指定行???
Sub?删除指定行()??
Workbooks("临时表").Sheets("表2").Range("5:5").Delete?
End?Sub????????
100:删除A列为指定内容的行???
Sub?删除A列为指定内容的行()?
Dim?a,?b?As?Integer??
a?=?Sheet1.[a65536].End(xlUp).Row????
For?b?=?a?To?2?Step?-1????????
If?Cells(b,?1).Value?=?"删除"?Then??????????
Rows(b).Delete???????
End?If????
Next?
End?Sub
求一段简单VBA代码.
?Private?Sub?OptionButton1_Click()
????If?OptionButton1?Then
????????TextBox1.Visible?=?True
????Else
????????TextBox1.Visible?=?False
????End?If
????If?OptionButton2?Then
????????TextBox2.Visible?=?True
????Else
????????TextBox2.Visible?=?False
????End?If
????If?OptionButton3?Then
????????TextBox3.Visible?=?True
????Else
????????TextBox3.Visible?=?False
????End?If
End?Sub
Private?Sub?OptionButton2_Click()
????If?OptionButton1?Then
????????TextBox1.Visible?=?True
????Else
????????TextBox1.Visible?=?False
????End?If
????If?OptionButton2?Then
????????TextBox2.Visible?=?True
????Else
????????TextBox2.Visible?=?False
????End?If
????If?OptionButton3?Then
????????TextBox3.Visible?=?True
????Else
????????TextBox3.Visible?=?False
????End?If
End?Sub
Private?Sub?OptionButton3_Click()
????If?OptionButton1?Then
????????TextBox1.Visible?=?True
????Else
????????TextBox1.Visible?=?False
????End?If
????If?OptionButton2?Then
????????TextBox2.Visible?=?True
????Else
????????TextBox2.Visible?=?False
????End?If
????If?OptionButton3?Then
????????TextBox3.Visible?=?True
????Else
????????TextBox3.Visible?=?False
????End?If
End?Sub
简化一段Excel VBA代码
只需要添加几句,然后将多余的删除即可。
在第一句前添加如下:
i = Range(“XFD1”).End(xlToLeft).Column
For i = 1 to 8
然后将下图红色划线部分分别修改为Cells(i)和Cells(1,i)
在最后部分添加:
i = Cells(1,i).End(xlToLeft).Column
Next
其余部分全部删除。
前面两句的意思是:
1、从工作表的第一行最右边向左边寻找非空单元格的列序号;
2、做个循环,一共是8次,因为H列到AA列共8个数据;
最后两句的意思,一个是再次查找非空列序号,和For循环的结构语。