Excel VBA常用代码VSTO版(C#)
1-1 使用Range属性
[\"A3:F6, B1:C5\"].Select();
1-2 使用Cells属性
for(int icell=1;icell<=100;icell++)
{
1].value = icell;
}
1-3 @
1-4 使用快捷记号
#N/A
1-5 使用Offset属性
[\"A1:A3\"].Offset[3, 3].Select();
1-6 使用Resize属性
[\"A1\"].Resize[3, 3].Select();
1-7 使用Union属性
\"A1:D4\"], [\"E5:H8\"]).Select();
'
1-8 使用UsedRange属性
1-9 使用CurrentRegion属性
[\"A5\"].();
2-1 使用Select方法
\"A1:B10\"].Select();
2-2 使用Activate方法
\"A1:B10\"].Activate();
注:此处的代码,可以运行,但是只会选中A1这一个单元格
2-3 使用Goto方法
\"A1:B10\"], true);
3-1 获得指定行,列中的最后一个非空单元格
rng = [\"A65535\"].End[ (\"A列中最后一个非空单元格是\" + [0, 0] + \行号\" + + \数值\" + ;
4-1 定位单元格
rng = ();
,
(\"工作表中有公式的单元格为:\" + ;
5-1 查找单元格
rng, Rng;
Rng = [\"A:A\"];
string strFind = ;
if () !=
{
rng = (strFind, [ false);
if (rng != null)
{
!
true);
}
else
{
(\"没有找到单元格!\");
}
}
注:C#中没有InputBox,这里用文本框代替,另,C#中没有with……End with语句.
5-1 查找单元格重复数据
rng, Rng;
》
string FindAddress = ;
Rng = [\"A:A\"];
string strFind = ;
if () !=
{
rng = (strFind, [ false);
if (rng != null)
{
FindAddress = ;
do
{
|
rng=(rng);
}while(rng != null && != FindAddress);
}
}
5-2 使用Like运算符
C#中没有Like运算符,可以用正则表达式来处理.
6-1 替换单元格内字符串
~
[\"A1:A5\"].Replace(\"通州\南通\");
7-1 复制单元格区域
= false;
[\"A1\"].\"A1\"]);
= true;
7-2 复制单元格区域时带列宽大小
[\"A1\"].();
rng = \"A1\"];
= 使用选择性粘贴
《
[\"A1\"].();
rng = \"A1\"];
= 直接赋值的方法
rng = \"A1\"];
Rng = [\"A1\"].CurrentRegion;
[ = ;
9-1 单元格自动进入编辑状态
先在”VSTO 设计器生成的代码”内加入
+= new (工作表1_SelectionChange);
然后在事件代码中输入
\\
if == 3 && == 1)
{
if ==
{
\"{F2}\");
}
}
10-1 禁用单元格拖放功能
if [\"A1:A15\"]) != null)
{
>
= false;
}
else
{
= true;
}
11-1 单元格字体格式设置
rng = [\"A1\"].Font;
= \"宋体\";
= \"Bold\";
、
= 18;
= 3;
= 2;
11-2 设置单元格内部格式
rng = [\"A1\"].Interior;
= 3;
= = 6;
11-3 为单元格区域添加边框
rng = [\"B4:G10\"].Borders;
>
= = = 5;
col = 5;
[\"B4:G10\"].BorderAround2 col = 5;
rng = [\"B4:G10\"].Borders[
为单元格区域应用多种边框格式 Rng = [\"B4:G10\"].Borders[ =
= = col;
= = = col;
[\"B4:G10\"].BorderAround2 col);
11-4 靈活設置單元格的行高列寬
rng1 = [\"A1\"];
rng2 = [\"B1\"];
、
= = = = 單元格中建立數據有效性
rng = [\"A1:A10\"];
\"1,2,3,4,5,6,7,8\");
12-2 判斷單元格是否存在數據有效性
try
{
if [\"A12\"]. >= 0)
{
(\"單元格中有數據有效性!\");
}
(
}
catch
{
(\"單元格中沒有數據有效性!\");
}
12-3 動態的數據有效性
void 工作表1_SelectionChange Target)
{
if == 1 && == 1 && > 1)
{
》
\"主機,顯示器\");
}
}
12-4 自動展開數據有效性下拉列表
\"%{down}\");
13-1 在單元格中寫入公式
[\"C1:C10\"].Formula=\"=sum(A1,B1)\";
13-1 寫入單元格區域數組公式
!
[\"C1\"].FormulaArray = \"=A1:A2*B1:B2\";
13-2 檢查單元格是否含有公式
rng = if )
{
(\"公式區域為:\" + 23).Address[0, 0]);
}
else if
{
(\"全部單元格為公式!\");
}
>
else
{
(\"全部單元格不為公式!\");
}
注:因為HasFormula返回的是一個dynamic類型的值,C#的swith貌似并不支持.
13-3 判斷單元格公式是否存在錯誤
未研究出來,如何調用,用了Excel自帶函數來處理的.
rng = [\"A1\"].Offset[0, 1];
= \"=iserror(A1)\";
if
—
{
(\"A1單元格錯誤類型為:\" + [\"A1\"].Text);
}
else
{
(\"A1單元格結果為:\" + [\"A1\"].Text);
}
13-4 取得單元格中公式的引用單元格
rng = [\"C1\"].Precedents;
(\"公式所引用的單元格有:\" + ;
$
13-5 將單元格中的公式轉換為數值
rng = [\"C1:C10\"];
= \"=sum(A1:B1)\";
= ;
14-1 判斷單元格是否存在指注
if [\"A1\"].Comment == null)
{
(\"A1單元格中沒有批注\");
}
—
else
{
(\"A1單元格中批注內容為:\" + \"\\n\" + [\"A1\"].());
}
14-2 為單元格添加批注
rng = [\"A1\"];
if == null)
{
;
= true;
{
}
14-3 刪除單元格中的批注
rng = [\"A1\"];
if != null)
{
}
15-1 判斷單元格區域是否存在合并單元格
rng = if )
{
%
(\"區域中包含合并單元格!\");
}
else if
{
(\"區域中全部為合并單元格!\");
}
else
{
(\"區域中沒有合并單元格!\");
}
\\
15-2 合并單元格時連接每個單元格的文本
rng = string s = ;
foreach Rng in rng)
{
s = s + ;
}
= false;
();
= s;
= true;
,
15-3 合并內容相同的連續單元格
int rEnd = [\"A65535\"].End[ = false;
for (int i = rEnd; i >= 2; i--)
{
rng = [i, 1];
if == [-1, 0].Value)
{
[-1, 0]).Merge();
}
}
,
15-4 取消合并單元格時在每個單元格中保留內容
int rEnd = [\"A65535\"].End[ int m = [rEnd, 1].;
[Cells[1, 1], Cells[rEnd, 1]].UnMerge();
= false;
for (int i = 1; i < rEnd+m; i++)
{
rng = [i, 1];
if [1, 0].Text ==
{
[1, 0].Value = ;
}
)
}
16-1 高亮顯示單元格區域
rng = = = 8;
17-1 雙擊被保護單元格時不顯示提示消息框
if
{
(\"此單元格已保護,不能編輯\");
Cancel = true;
}
*
18-1 重新計算工作表指定區域
oldCalcultion = = \"A1:D10\"].Calculate();
= oldCalcultion;
19-1 錄入數據后單元格自動保護
if
{
(\"123456\");
}
if !=
]
{
= true;
(\"123456\");
}
20-1 使用單元格的Address屬性
if [0,0]==\"A1\")
{
(\"你選擇了A1單元格\");
}
>
20-2 使用Column屬性和Row屬性
int i=0;
if == 1 && < 11 && ,out i))
{
[0, 1].Value = i * 3;
}
20-3 使用Intersect方法
rng = \"A1:A10\"], [\"C1:C10\"]));
~
if (rng != null)
{
(\"你選擇了\" + [0, 0] + \"單元格\");
}
21-1 使用工作表的名称
\"工作表2\"].Activate();
21-2 使用工作的索引号
使用工作表的代码名称
:
21-4 用ActiveSheet属性引用活动工作表
( 选择工作表的方法
23-1 使用For遍历工作表
int wkCount = string s = ;
for (int i = 1; i <= wkCount; i++)
{
s = s + + \"\\n\";
…
}
(\"工作簿中含有以下工作表:\" + \"\\n\" + s);
23-2 使用ForEach语句
string s = ;
foreach wk in {
s = s + + \"\\n\";
}
(\"工作簿中含有以下工作表:\" + \"\\n\" + s);
24-1 在工作表中向下翻页
{
shs= wkThis = wkNext;
int wkIndex = ;
int wkCount = ;
if (wkIndex < wkCount)
{
wkNext = ;
();
}
25-1 工作表的添加与删除
、
wksThis = wsAdd = = \"数据\";
wksThis[]);
25-1 批量添加工作表
wksThis = wksNew = null;
if <= 3)
{
for (int i = 1; i <= 10; i++)
{
wksNew = wksThis[]);
= \"第\" + () + \"个工作表\";
~
}
}
26-1 禁止删除指定工作表
cmdCtl = 可以找到删除按钮,但是无法禁止,也无法加载单击事件,非常奇怪.
而且在Office 2010里,也无法禁用某个按钮,但是整个菜单是可以的.
27-1 自动建立工作表目录
int i = for (int n = 1; n <= i; n++)
{
[n+1, 1].Value = }
《
27-1 建立工作表链接
int m = if == 1)
{
if ==1)
{
if >1 && <=(m+1))
{
}
}
}
#
28-1 工作表的深度隐藏
= 防止更改工作表的名称
void ThisWorkbook_BeforeClose(ref bool Cancel)
{
if [1].Name != \"Excel Home\")
{
[1].Name = \"Excel Home\";
}
();
}
!
30-1 工作表中一次插入多行
rng = [3];
[3].Insert();
31-1 删除工作表中的空行
rng = ;
int rngEnd = [ for (int i = rngEnd; i >=1; i++)
{
if == 0)
{
、
[i].Delete();
}
}
32-1 删除工作表的重复行
int rngEnd = [\"A65535\"].End[ for (int i = rngEnd; i>=1; i--)
{
if [i, 1]) > 1)
{
[i].Delete();
}
%
}
33-1 定位删除特定内容所在的行(删除A列中包含”Excel”字符的行
= false;
int rngEnd = [\"A65535\"].End[ string str = \"Excel.*\";
for (int i = rngEnd; i >= 1; i--)
{
rng = [i, 1];
if , str))
{
【
[i].Delete();
}
}
注:需引用using 判断是否选中整行
int i = rng = if == i)
{
(\"你选中了一整行\");
}
else
{
(\"你没有选中了一整行\");
—
}
35-1 限制工作表的滚动区域
= \"B4:H12\";
36-1 复制自动筛选后的数据区域
if
{
1]);
}
#
37-1 使用高级筛选获得不重复记录
rngSheet2 = ();
[\"A1\"].(
1],
true);
38-1 工作表的保护与解除保护
(\"12345\");
[1,1].Value=100;
(\"12345\");
39-1 奇偶页打印
int pg = for (int i = 1; i <= pg; i=i+2)
{
(1, i);
}
40-1 使用工作簿的名称
string str = \"工作簿的引用方法.xlsx\"].Path;
(str);
40-3 使用ThisWorkbook
使用ActiveWorkbook
新建工作簿
Nowbook;
string[] shName = new string[4] { \"余额\单价\数量\金额\" };
string[] arr = new string[12] { \"01月\月\月\月\月\月\月\月\月\月\月\月\" };
= 4;
Nowbook = for (int i = 1; i <= 4; i++)
{
[i].Name = shName[i - 1];
[i].Range[\"B1\"].Resize[1, ] = arr;
[i].Range[\"B2\"] = \"品名\";
}
(\"C:\\\\\" +\"存货明细.xlsx\");
(true);
42-1 打开指定的工作簿
int wkCount = for (int i = 1; i <= wkCount; i++)
{
if == \"\")
{
(\"123工作簿已经打开\");
}
}
\"C:\\\\\" + \"\");
因篇幅问题不能全部显示,请点此查看更多更全内容