ExcelVBA常用代码VSTO版.docx

上传人:b****3 文档编号:3946546 上传时间:2022-11-26 格式:DOCX 页数:19 大小:32.18KB
下载 相关 举报
ExcelVBA常用代码VSTO版.docx_第1页
第1页 / 共19页
ExcelVBA常用代码VSTO版.docx_第2页
第2页 / 共19页
ExcelVBA常用代码VSTO版.docx_第3页
第3页 / 共19页
ExcelVBA常用代码VSTO版.docx_第4页
第4页 / 共19页
ExcelVBA常用代码VSTO版.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

ExcelVBA常用代码VSTO版.docx

《ExcelVBA常用代码VSTO版.docx》由会员分享,可在线阅读,更多相关《ExcelVBA常用代码VSTO版.docx(19页珍藏版)》请在冰豆网上搜索。

ExcelVBA常用代码VSTO版.docx

ExcelVBA常用代码VSTO版

ExcelVBA常用代码VSTO版

ExcelVBA常用代码VSTO版(C#)

1-1使用Range属性

this.Range["A3:

F6,B1:

C5"].Select();

1-2使用Cells属性

for(inticell=1;icell<=100;icell++)

{

this.Application.Worksheets[2].cells[icell,1].value=icell;

}

1-3使用快捷记号

#N/A

1-4使用Offset属性

this.Range["A1:

A3"].Offset[3,3].Select();

1-5使用Resize属性

this.Range["A1"].Resize[3,3].Select();

1-6使用Union属性

this.Application.Union(this.Range["A1:

D4"],this.Range["E5:

H8"]).Select();

1-7使用UsedRange属性

this.UsedRange.Select();

1-8使用CurrentRegion属性

this.Range["A5"].CurrentRegion.Select();

2-1使用Select方法

this.Application.Worksheets[3].Activate();

this.Application.Worksheets[3].Range["A1:

B10"].Select();

2-2使用Activate方法

this.Application.Worksheets[3].Activate();

this.Application.Worksheets[3].Range["A1:

B10"].Activate();

注:

此处的代码,可以运行,但是只会选中A1这一个单元格

2-3使用Goto方法

this.Application.Goto(this.Application.Worksheets[3].Range["A1:

B10"],true);

 

3-1获得指定行,列中的最后一个非空单元格

Excel.Rangerng=this.Range["A65535"].End[Excel.XlDirection.xlUp];

MessageBox.Show("A列中最后一个非空单元格是"+rng.Address[0,0]+",行号"+rng.Row.ToString()+",数值"+rng.Text);

 

4-1定位单元格

Excel.Rangerng=this.UsedRange.SpecialCells(Excel.XlCellType.xlCellTypeFormulas);

rng.Select();

MessageBox.Show("工作表中有公式的单元格为:

"+rng.Address);

5-1查找单元格

Excel.Rangerng,Rng;

Rng=this.Range["A:

A"];

stringstrFind=textBox1.Text;

if(strFind.Trim()!

=string.Empty)

{

rng=Rng.Find(strFind,Rng.Cells[Rng.Cells.Count],Excel.XlFindLookIn.xlValues,Excel.XlLookAt.xlWhole,Excel.XlSearchOrder.xlByRows,Excel.XlSearchDirection.xlNext,false);

if(rng!

=null)

{

this.Application.Goto(rng,true);

}

else

{

MessageBox.Show("没有找到单元格!

");

}

}

注:

C#中没有InputBox,这里用文本框代替,另,C#中没有with……Endwith语句.

5-1查找单元格重复数据

Excel.Rangerng,Rng;

stringFindAddress=string.Empty;

Rng=this.Range["A:

A"];

stringstrFind=textBox1.Text;

if(strFind.Trim()!

=string.Empty)

{

rng=Rng.Find(strFind,Rng.Cells[Rng.Cells.Count],Excel.XlFindLookIn.xlValues,Excel.XlLookAt.xlWhole,Excel.XlSearchOrder.xlByRows,Excel.XlSearchDirection.xlNext,false);

if(rng!

=null)

{

FindAddress=rng.Address;

do

{

rng.Interior.ColorIndex=6;

rng=Rng.FindNext(rng);

}while(rng!

=null&&rng.Address!

=FindAddress);

}

}

5-2使用Like运算符

C#中没有Like运算符,可以用正则表达式来处理.

6-1替换单元格内字符串

this.Range["A1:

A5"].Replace("通州","南通");

7-1复制单元格区域

this.Application.DisplayAlerts=false;

this.Range["A1"].CurrentRegion.Copy(this.Application.Worksheets[2].Range["A1"]);

this.Application.DisplayAlerts=true;

7-2复制单元格区域时带列宽大小

this.Range["A1"].CurrentRegion.Copy();

Excel.Rangerng=this.Application.Worksheets[3].Range["A1"];

rng.PasteSpecial(Excel.XlPasteType.xlPasteColumnWidths);

rng.PasteSpecial(Excel.XlPasteType.xlPasteAll);

this.Application.CutCopyMode=Excel.XlCutCopyMode.xlCut;

8-1使用选择性粘贴

this.Range["A1"].CurrentRegion.Copy();

Excel.Rangerng=this.Application.Worksheets[3].Range["A1"];

rng.PasteSpecial(Excel.XlPasteType.xlPasteValues);

this.Application.CutCopyMode=Excel.XlCutCopyMode.xlCut;

8-2直接赋值的方法

Excel.Rangerng=this.Application.Worksheets[3].Range["A1"];

Excel.RangeRng=this.Range["A1"].CurrentRegion;

rng.Resize[Rng.Rows.Count,Rng.Columns.Count].Value=Rng.Value;

9-1单元格自动进入编辑状态

先在”VSTO设计器生成的代码”内加入

this.SelectionChange+=newExcel.DocEvents_SelectionChangeEventHandler(工作表1_SelectionChange);

然后在事件代码中输入

if(Target.Column==3&&Target.Count==1)

{

if(Target.Text==string.Empty)

{

this.Application.SendKeys("{F2}");

}

}

10-1禁用单元格拖放功能

if(this.Application.Intersect(Target,this.Range["A1:

A15"])!

=null)

{

this.Application.CellDragAndDrop=false;

}

else

{

this.Application.CellDragAndDrop=true;

}

11-1单元格字体格式设置

Excel.Fontrng=this.Range["A1"].Font;

rng.Name="宋体";

rng.FontStyle="Bold";

rng.Size=18;

rng.ColorIndex=3;

rng.Underline=2;

11-2设置单元格内部格式

Excel.Interiorrng=this.Range["A1"].Interior;

rng.ColorIndex=3;

rng.Pattern=Excel.XlPattern.xlPatternCrissCross;

rng.PatternColorIndex=6;

11-3为单元格区域添加边框

Excel.Bordersrng=this.Range["B4:

G10"].Borders;

rng.LineStyle=Excel.XlLineStyle.xlContinuous;

rng.Weight=Excel.XlBorderWeight.xlThin;

rng.ColorIndex=5;

Excel.XlColorIndexcol=(Excel.XlColorIndex)5;

this.Range["B4:

G10"].BorderAround2(Excel.XlLineStyle.xlContinuous,Excel.XlBorderWeight.xlMedium,col);

11-3为单元格区域应用多种边框格式

Excel.XlColorIndexcol=(Excel.XlColorIndex)5;

Excel.Borderrng=this.Range["B4:

G10"].Borders[Excel.XlBordersIndex.xlInsideHorizontal];

Excel.BorderRng=this.Range["B4:

G10"].Borders[Excel.XlBordersIndex.xlInsideVertical];

rng.LineStyle=Excel.XlLineStyle.xlDot;

rng.Weight=Excel.XlBorderWeight.xlThin;

rng.ColorIndex=col;

Rng.LineStyle=Excel.XlLineStyle.xlContinuous;

Rng.Weight=Excel.XlBorderWeight.xlThin;

Rng.ColorIndex=col;

this.Range["B4:

G10"].BorderAround2(Excel.XlLineStyle.xlContinuous,Excel.XlBorderWeight.xlMedium,col);

11-4靈活設置單元格的行高列寬

Excel.Rangerng1=this.Range["A1"];

Excel.Rangerng2=this.Range["B1"];

rng1.RowHeight=this.Application.CentimetersToPoints

(2);

rng1.ColumnWidth=this.Application.CentimetersToPoints(1.5);

rng2.RowHeight=this.Application.CentimetersToPoints(1.2);

rng2.ColumnWidth=this.Application.CentimetersToPoints(0.3);

12-1單元格中建立數據有效性

Excel.Rangerng=this.Range["A1:

A10"];

rng.Validation.Delete();

rng.Validation.Add(

Excel.XlDVType.xlValidateList,

Excel.XlDVAlertStyle.xlValidAlertStop,

Excel.XlFormatConditionOperator.xlBetween,

"1,2,3,4,5,6,7,8");

12-2判斷單元格是否存在數據有效性

try

{

if(this.Range["A12"].Validation.Type>=0)

{

MessageBox.Show("單元格中有數據有效性!

");

}

}

catch

{

MessageBox.Show("單元格中沒有數據有效性!

");

}

12-3動態的數據有效性

void工作表1_SelectionChange(Excel.RangeTarget)

{

if(Target.Column==1&&Target.Count==1&&Target.Row>1)

{

Target.Validation.Delete();

Target.Validation.Add(

Excel.XlDVType.xlValidateList,

Excel.XlDVAlertStyle.xlValidAlertStop,

Excel.XlFormatConditionOperator.xlBetween,

"主機,顯示器");

}

}

12-4自動展開數據有效性下拉列表

this.Application.SendKeys("%{down}");

13-1在單元格中寫入公式

this.Range["C1:

C10"].Formula="=sum(A1,B1)";

13-1寫入單元格區域數組公式

this.Range["C1"].FormulaArray="=A1:

A2*B1:

B2";

13-2檢查單元格是否含有公式

Excel.Rangerng=this.Application.Selection;

if(Convert.IsDBNull(rng.HasFormula))

{

MessageBox.Show("公式區域為:

"+rng.SpecialCells(Excel.XlCellType.xlCellTypeFormulas,23).Address[0,0]);

}

elseif(rng.HasFormula)

{

MessageBox.Show("全部單元格為公式!

");

}

else

{

MessageBox.Show("全部單元格不為公式!

");

}

注:

因為HasFormula返回的是一個dynamic類型的值,C#的swith貌似并不支持.

13-3判斷單元格公式是否存在錯誤

未研究出來,如何調用VBA.IsError,用了Excel自帶函數來處理的.

Excel.Rangerng=this.Range["A1"].Offset[0,1];

rng.Formula="=iserror(A1)";

if(rng.Value)

{

MessageBox.Show("A1單元格錯誤類型為:

"+this.Range["A1"].Text);

}

else

{

MessageBox.Show("A1單元格結果為:

"+this.Range["A1"].Text);

}

13-4取得單元格中公式的引用單元格

Excel.Rangerng=this.Range["C1"].Precedents;

MessageBox.Show("公式所引用的單元格有:

"+rng.Address);

13-5將單元格中的公式轉換為數值

Excel.Rangerng=this.Range["C1:

C10"];

rng.Formula="=sum(A1:

B1)";

rng.Value=rng.Value;

14-1判斷單元格是否存在指注

if(this.Range["A1"].Comment==null)

{

MessageBox.Show("A1單元格中沒有批注");

}

else

{

MessageBox.Show("A1單元格中批注內容為:

"+"\n"+this.Range["A1"].Comment.Text());

}

14-2為單元格添加批注

Excel.Rangerng=this.Range["A1"];

if(rng.Comment==null)

{

rng.AddComment(rng.Text);

rng.Comment.Visible=true;

}

14-3刪除單元格中的批注

Excel.Rangerng=this.Range["A1"];

if(rng.Comment!

=null)

{

rng.Comment.Delete();

}

15-1判斷單元格區域是否存在合并單元格

Excel.Rangerng=this.Application.Selection;

if(Convert.IsDBNull(rng.MergeCells))

{

MessageBox.Show("區域中包含合并單元格!

");

}

elseif(rng.MergeCells)

{

MessageBox.Show("區域中全部為合并單元格!

");

}

else

{

MessageBox.Show("區域中沒有合并單元格!

");

}

15-2合并單元格時連接每個單元格的文本

Excel.Rangerng=this.Application.Selection;

strings=string.Empty;

foreach(Excel.RangeRnginrng)

{

s=s+Rng.Text;

}

this.Application.DisplayAlerts=false;

rng.Merge();

rng.Value=s;

this.Application.DisplayAlerts=true;

15-3合并內容相同的連續單元格

intrEnd=this.Range["A65535"].End[Excel.XlDirection.xlUp].Row;

this.Application.DisplayAlerts=false;

for(inti=rEnd;i>=2;i--)

{

Excel.Rangerng=this.Cells[i,1];

if(rng.Value==rng.Offset[-1,0].Value)

{

this.Application.Union(rng,rng.Offset[-1,0]).Merge();

}

}

15-4取消合并單元格時在每個單元格中保留內容

intrEnd=this.Range["A65535"].End[Excel.XlDirection.xlUp].Row;

intm=this.Cells[rEnd,1].MergeArea.Count-1;

this.Range[Cells[1,1],Cells[rEnd,1]].UnMerge();

this.Application.DisplayAlerts=false;

for(inti=1;i

{

Excel.Rangerng=this.Cells[i,1];

if(rng.Offset[1,0].Text==string.Empty)

{

rng.Offset[1,0].Value=rng.Value;

}

}

16-1高亮顯示單元格區域

Excel.Rangerng=this.Application.Selection;

Cells.Interior.ColorIndex=Excel.XlColorIndex.xlColorIndexNone;

rng.Interior.ColorIndex=8;

17-1雙擊被保護單元格時不顯示提示消息框

if(Target.Locked)

{

MessageBox.Show("此單元格已保護,不能編輯");

Cancel=true;

}

18-1重新計算工作表指定區域

Excel.XlCalculationoldCalcultion=this.Application.Calculation;

this.Application.Calculation=Excel.XlCalculation.xlCalculationManual;

this.Range["A1:

D10"].Calculate();

this.Application.Calculation=oldCalcultion;

19-1錄入數據后單元格自動保護

if(this.ProtectContents)

{

this.Unprotect("123456");

}

if(Target.Text!

=string.Empty)

{

Target.Locked=true;

this.Protect("123456");

}

20-1使用單元格的Address屬性

if(Target.Address[0,0]=="A1")

{

MessageBox.Show("你選擇了A1單元格");

}

 

20-2使用Column屬性和Row屬性

inti=0;

if(Target.Column==1&&Target.Row<11&&int.TryParse(Target.Text,outi))

{

Target.Offset[0,1].Value=i*3;

}

 

20-3使用Intersect方法

Excel.Rangerng=this.Application.Intersect(Tar

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1