ExcelVBA常用代码VSTO版.docx
- 文档编号:24886245
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:17
- 大小:19.33KB
ExcelVBA常用代码VSTO版.docx
《ExcelVBA常用代码VSTO版.docx》由会员分享,可在线阅读,更多相关《ExcelVBA常用代码VSTO版.docx(17页珍藏版)》请在冰豆网上搜索。
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;i rng=[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: \\"+"");
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ExcelVBA 常用 代码 VSTO