您的当前位置:首页正文

ExcelVBA常用代码VSTO版

2021-01-15 来源:好走旅游网


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:\\\\\" + \"\");

因篇幅问题不能全部显示,请点此查看更多更全内容