ExcelVBA常用代码VSTO版.docx
《ExcelVBA常用代码VSTO版.docx》由会员分享,可在线阅读,更多相关《ExcelVBA常用代码VSTO版.docx(17页珍藏版)》请在冰点文库上搜索。
![ExcelVBA常用代码VSTO版.docx](https://file1.bingdoc.com/fileroot1/2023-6/2/02cd4fd5-fd4e-42e8-899d-5a06bafe33db/02cd4fd5-fd4e-42e8-899d-5a06bafe33db1.gif)
ExcelVBA常用代码VSTO版
ExcelVBA常用代码VSTO版(C#)
1-1使用Range属性
[”A3:
F6,B1:
C5M].SelectO;
1-2使用Cells属性
for(inticell=l:
icell<=100;icell++)
{
1].value=icell;
}
1-3・
使用快捷记号
#N/A
1-5使用Offset属性
["Al:
A3"[.Offset[3,3].SelectO;
1-6使用Resize属性
["Al"].Resize[3,3].Select();
1-7使用Union厲性
"A1:
D4"],[ME5:
H8M]).SelectO;
1-8使用UsedRange属性
1-9使用CurrentRegion属性
[”A5”].0;
2-1使用Select方法
,A1:
B1O,^].SelectO;
2-2使用Activate方法
"Al:
BIO"].Activate();
注:
此处的代码,可以运行,但是只会选中Al这一个单元格
2-3使用Goto方法
"Al:
BIO"],true);
3-1获得指定行•列中的最后一个非空单元格
rng=[wA65535"].End[("A列中最后一个非空单元格是"+[0,0]+",行号"++",数
值”+:
4-1定位单元格
rng=0;
("工作表中有公式的单元格为:
"+;
5-1查找单元格
rng,Rng;
Rng=["A:
A"];
stringstrFind=;
if0!
=
{
rng=(strFind,[false):
if(rng!
=null)
{
J
true);
}
else
{
("没有找到单元格!
");
}
}
注:
C#中没有InputBox,这里用文本框代替,另,C#中没有withEndwith语句.
5-1查找单元格重复数据
rng,Rng;
>
stringFindAddress=;
Rng=["A:
A"];
stringstrFind=;
if0!
=
rng=(strFind,[false):
if(rng!
=null)
FindAddress=;
do
{
rng=(rng);
}while(rng!
=null&&!
=FindAddress):
}
}
5-2使用Like运算符
C#中没有Like运算符,可以用正则表达式来处理.
6-1替换单元格内字符串
[wAl:
A5w].Replace(w通州","南通");
7-1复制单元格区域
=false;
["Al"]."Al"]);
=true;
7-2复制单元格区域时带列宽大小["A1"].0;
rng="Al"];
=使用选择性粘贴
["A1"].0;
rng="Al"];
=直接赋值的方法
rng="Al"];
Rng=[,rAlCurrentRegion;
9-1单元格自动进入编辑状态
先在”VSTO设计器生成的代码”内加入+二new(工作表1SelectionChange):
然后在事件代码中输入
if==3&&==1)
{
if==
{
w{F2}tt);
}
}
10-1禁用单元格拖放功能
if["A1:
A15"])!
=null)
=false;}
else
{
=true;
}
11-1单元格字体格式设置rng=["Al”].Font;「'宋体";=,rBold,r;
=18;
=3;
=2;
11-2设置单元格内部格式rng=["Al”]・Interior;=3;
==6;
11-3为单元格区域添加边框
rng=[,rB4:
G10'rJ.Borders;
=5;
col=5;
["B4:
G1O"].BorderAround2为单元格区域应用多种边框格式
col=5;
=col;
rng=["B4:
G1O"].Borders]Rng=["B4:
G10"].Borders]===col;
丨"B4:
G10"].BorderAround2col);
11-4靈活設置單元格的行髙列寬
rngl=["Al"];
rng2=["Bl"];
====單元格中建立數據有效性
rng=["Al:
A10"];
T,2,3,4,5,6,7,8");
12-2判斷單元格是否存在數據有效性
try
{
if["A12"].>=0)
{
("單元格中有數據有效性!
");
}
}
catch
{
("單元格中沒有數據有效性!
");}
12-3動態的數據有效性
void工作表1SelectionChangeTarget){
if==1&&==1&&>1)
"主機,顯示器");
12-4自動展開數據有效性下拉列表
"%{down}w);
13-1在單元格中寫入公式
【"C1:
C1O"|.Formula=',=sum(Al,Bl)";
13-1寫入單元格區域數組公式
I
["C1FormulaArray="二Al:
A2*B1:
B2";
13-2檢查單元格是否含有公式
rng=if)
{
("公式區域為:
"+23).Address[0,0]);
}
elseif
{
("全部單元格為公式!
");
}
else
{
("全部單元格不為公式!
");
}
注:
因為HasFormula返回的是一個dynamic類型的值,C#的swith貌似并不支持.
13-3判斷單元格公式是否存在錯誤
未研究出來,如何調用,用了Excel自帶函數來處理的.
rng=["AlOffset[0,1]:
=,,=iserror(Al),r;
if
CAI單元格錯誤類型為:
”+["Al"].Text);}
else
("Al單元格結果為:
"+["Al”].Text);
13-4取得單元格中公式的引用單元格rng=["Cl"]・Precedents;("公式所引用的單元格有:
"+;
13-5將單元格中的公式轉換為數值
rng=["C1:
C1O"];="二sum(Al:
Bl)";
=;
14-1判斷單元格是否存在指注
if["AlComment==null)
{
("Al單元格中沒有批注”);
}
else
{
CA1單元格中批注內容為:
”+”\n”+[”A1”].());}
14-2為單元格添加批注
rng=["Al"];
if==null)
{
■
=true;
}
14-3刪除單元格中的批注
rng=["Al"];
if!
=null)
{
}
15-1判斷單元格區域是否存在合并單元格
rng=if)
"區域中包含合并單元格「);
}
elseif
{
("區域中全部為合并單元格!
");
}
else
{
("區域中沒有合并單元格!
");
}
15-2合并單元格時連接每個單元格的文本rng=strings=;
foreachRnginrng)
{
s=s+;
}
=false;
0;
=S;
=true;
15-3合并內容相同的連續單元格
intrEnd=["A65535"].End[=false;
for(inti=rEnd;i>=2;i—)
{
rng=[i,1];
if==[T,01.Value)
{
[T,0]).Merge():
}
}
15-4取消合并單元格時在每個單元格中保留內容intrEnd=["A65535"].End[intm=[rEnd,1].;[Cells[l,1],Cells[rEnd,1]].UnMerge();
=false;
for(inti=1;irng=[i,11;
if[1,0|.Text==
{
[1,0].Value=;
}
16-1髙亮顯示單元格區域
rng===8;
17-1雙擊被保護單元格時不顯示提示消息框if
{
("此單元格已保護,不能編輯");
Cancel=true;
18-1重新計算工作表指定區域oldCalcultion==,rAl:
D10'r].Calculate():
=oldCalcultion;
19-1錄入數據后單元格自動保護if
{
(T23456");
}
if!
=
=true;
(T23456");
}
20-1使用單元格的Address屬性if[0,0]==ttAln)
(”你選擇了Al單元格J;}
20-2使用Column屬性和Row屬性
inti=0;
if==1&&<11&&,outi))
{
[0,1].Value=i*3;
}
20~3使用Intersect方法
rng="Al:
A10"],[',Cl:
C10'r]));
if(rng!
=null)
{
("你選擇了"+[0,0]+"單元格");
}
21-1使用工作表的名称
"工作表2"].ActivateO;
21-2使用工作的索引号
使用工作表的代码名称
21-4用ActiveSheet属性引用活动工作表(选择工作表的方法
23-1使用For遍历工作表
intwkCount=strings=;
for(inti=1;i<=wkCount;i++)
}
("工作簿中含有以下工作表:
"+"\十+S);
23-2使用ForEach语句
strings=;
foreachwkin{
s=s++"\n";
}
("工作簿中含有以下工作表:
"+“\n"+s);
24-1在工作表中向下翻页
shs=wkThis=wkNext;
intwkindex=;
intwkCount=;
if(wkIndex{
wkNext=;
0;
}
25-1工作表的添加与删除
wksThis=wsAdd=wksThis[]):
二"数据";
25-1批量添加工作表
wksThis=wksNew=null;
if<=3)
{
for(inti=1;i<=10;i++)
{
wksNew=wksThis[]);
二”第"+()+”个工作表J
26-1禁止删除指定工作表
cmdCtl=可以找到删除按钮,但是无法禁止,也无法加载单击事件,非常奇怪.
而且在0ffice2010里,也无法禁用某个按钮,但是整个菜单是可以的.
27-1自动建立工作表目录
inti=for(intn=1;n<=i;n++)
{
[n+1,1].Value=}
27-1建立工作表链接intm=if==1)
{
if==1)
{
if>1&&<=(m+l))
{
}
}
}
28-1工作表的深度隐藏
=防止更改工作表的名称
voidThisWorkbookBeforeClose(refboolCancel){
if[1].Name!
="ExcelHome,r)
{
[1].Name="ExcelHome";
}
0;
}
30-1工作表中一次插入多行
rng=[3]:
[3].Insert();
31-1删除工作表中的空行
rng=;
intrngEnd=[for(inti=rngEnd;i>=1;i++)
if==0)
{
[i].Delete();
}
}
32-1删除工作表的重复行
intrngEnd=["A65535"].End[for(inti=rngEnd;i>=l;i―)
{
if[i,1])>1)
{
[i].Delete();
}
}
33-1定位删除特定内容所在的行(删除A列中包含”Excel”字符的行
=false;
intrngEnd=["A65535"].End[stringstr="Excel.*";
for(inti=rngEnd;i>=1;i—)
{
rng=[i,1];
if,str))
{
(
[i].Delete();
}
}
注:
需引用using判断是否选中整行
inti=rng=if==i)
{
("你选中了一整行");
}
else
("你没有选中了一整行");
35-1限制工作表的滚动区域
="B4:
H12";
36-1复制自动筛选后的数据区域
if
{
1]);
37-1使用髙级筛选获得不重复记录
rngSheet2=();
1],
["Al"].(
true);
38-1工作表的保护与解除保护
(T2345");
[1,1].Value=100;
("12345");
39-1奇偶页打印
intpg=for(inti=1;i<=pg;i=i+2)
{
(1,i);
}
40-1使用工作簿的名称
stringstr="工作簿的引用方法.xlsx'1].Path;(str);
40-3使用ThisWorkbook
使用ActiveWorkbook
新建工作簿
Nowbook;
string[]shName=newstring[4]{"余额","单价","数量","金额"};
string]]arr=newstring[12]{"01月”,"02月","03月","04月","05月","06月","07月","08月”,”09月",T0月”,”11月","12月”};
=4;
Nowbook=for(inti=1;i<=4;i++)
{
[i].Name=shName[i-1]:
[i].Range["Bl"].Resize[l,]=arr;
[i].Range[ttB2w]二"品名";
}
(WC:
\\W+”存货明细.xlsx");
(true);
42-1打开指定的工作簿
intwkCount=for(inti=1;i<=wkCount;i++)
{
if=="")
{
(T23工作簿已经打开”);
}
}
"C:
\\"+"");