Excel VBA常用代码VSTO
- 格式:docx
- 大小:24.24 KB
- 文档页数:5
21-1 使用工作表的名称this.Application.Worksheets["工作表2"].Activate();21-2 使用工作的索引号this.Application.Worksheets[2].Activate();21-3 使用工作表的代码名称MessageBox.Show(this.Application.ActiveSheet.CodeName);21-4 用ActiveSheet属性引用活动工作表this.Application.Worksheets[2].Select();MessageBox.Show( );22-1 选择工作表的方法this.Application.Worksheets[2].Select();this.Application.Worksheets[2].Activate();23-1 使用For遍历工作表int wkCount = this.Application.Worksheets.Count;string s = string.Empty;for (int i = 1; i <= wkCount; i++){s = s + this.Application.Worksheets[i].Name + "\n";}MessageBox.Show("工作簿中含有以下工作表:" + "\n" + s);23-2 使用ForEach语句string s = string.Empty;foreach (Excel.Worksheet wk in this.Application.Worksheets) {s = s + + "\n";}MessageBox.Show("工作簿中含有以下工作表:" + "\n" + s);24-1 在工作表中向下翻页Excel.Sheets shs=Globals.ThisWorkbook.Worksheets; Excel.Worksheet wkThis = shs.Application.ActiveSheet; Excel.Worksheet wkNext;int wkIndex = wkThis.Index;int wkCount = shs.Count;if (wkIndex < wkCount){wkNext = (Excel.Worksheet)wkThis.Next;wkNext.Select();}25-1 工作表的添加与删除Excel.Sheets wksThis = this.Application.Worksheets;Excel.Worksheet wsAdd = this.Application.Worksheets.Add(System.Type.Missing, wksThis[wksThis.Count]); = "数据";25-1 批量添加工作表Excel.Sheets wksThis = this.Application.Worksheets;Excel.Worksheet wksNew = null;if (wksThis.Count <= 3){for (int i = 1; i <= 10; i++){wksNew = wksThis.Add(System.Type.Missing, wksThis[wksThis.Count]); = "第" + i.ToString() + "个工作表";}}26-1 禁止删除指定工作表mandBarControl cmdCtl =mandBars[41].Controls[2];可以找到删除按钮,但是无法禁止,也无法加载单击事件,非常奇怪.而且在Office 2010里,也无法禁用某个按钮,但是整个菜单是可以的.27-1 自动建立工作表目录int i = this.Application.Worksheets.Count;for (int n = 1; n <= i; n++){this.Cells[n+1, 1].Value = this.Application.Worksheets[n].Name;}27-1 建立工作表链接int m = this.Application.Worksheets.Count;if (Target.Count == 1){if (Target.Column==1){if (Target.Row>1 && Target.Row<=(m+1)){this.Application.Sheets[Target.Value].Select();}}}28-1 工作表的深度隐藏this.Application.Sheets[2].Visible = Excel.XlSheetVisibility.xlSheetVeryHidden;29-1 防止更改工作表的名称void ThisWorkbook_BeforeClose(ref bool Cancel){if (this.Sheets[1].Name != "Excel Home"){this.Sheets[1].Name = "Excel Home";}this.Save();}30-1 工作表中一次插入多行Excel.Range rng = this.Rows[3];rng.Resize[3].Insert();31-1 删除工作表中的空行Excel.Range rng = edRange;int rngEnd = this.Cells[rng.Rows.Count,rng.Columns.Count].End[Excel.XlDirection.xlUp].Row;for (int i = rngEnd; i >=1; i++){if (this.Application.WorksheetFunction.CountA(this.Rows[i]) == 0){this.Rows[i].Delete();}}32-1 删除工作表的重复行int rngEnd = this.Range["A65535"].End[Excel.XlDirection.xlUp].Row;for (int i = rngEnd; i>=1; i--){if (this.Application.WorksheetFunction.CountIf(this.Columns[1], this.Cells[i, 1]) > 1){this.Rows[i].Delete();}}33-1 定位删除特定内容所在的行(删除A列中包含”Excel”字符的行this.Application.DisplayAlerts = false;int rngEnd = this.Range["A65535"].End[Excel.XlDirection.xlUp].Row;string str = "Excel.*";for (int i = rngEnd; i >= 1; i--){Excel.Range rng = this.Cells[i, 1];if (Regex.IsMatch(rng.Text, str)){this.Rows[i].Delete();}}注:需引用using System.Text.RegularExpressions;34-1 判断是否选中整行int i = this.Columns.Count;Excel.Range rng = this.Application.Selection;if (rng.Columns.Count == i){MessageBox.Show("你选中了一整行");}else{MessageBox.Show("你没有选中了一整行");}35-1 限制工作表的滚动区域this.ScrollArea = "B4:H12";36-1 复制自动筛选后的数据区域this.Application.Worksheets[2].Cells.Clear();if (this.FilterMode){this.AutoFilter.Range.SpecialCells(Excel.XlCellType.xlCellTypeVisible).Copy( this.Application.Worksheets[2].Cells[1, 1]);}37-1 使用高级筛选获得不重复记录Excel.Range rngSheet2 = this.Application.Worksheets[2].Cells;rngSheet2.Clear();this.Range["A1"].CurrentRegion.AdvancedFilter(Excel.XlFilterAction.xlFilterCopy,System.Type.Missing,this.Application.Worksheets[2].Cells[1, 1],true);38-1 工作表的保护与解除保护this.Unprotect("12345");this.Cells[1,1].Value=100;this.Protect("12345");39-1 奇偶页打印int pg = this.PageSetup.Pages.Count;for (int i = 1; i <= pg; i=i+2){this.PrintOutEx(1, i);}40-1 使用工作簿的名称string str = this.Application.Workbooks["工作簿的引用方法.xlsx"].Path;MessageBox.Show(str);40-3 使用ThisWorkbookthis.Application.ThisWorkbook.Close(false);40-4 使用ActiveWorkbookMessageBox.Show();41-1 新建工作簿Excel.Workbook Nowbook;string[] shName = new string[4] { "余额", "单价", "数量", "金额" };string[] arr = new string[12] { "01月", "02月", "03月", "04月", "05月", "06月", "07月", "08月", "09月", "10月", "11月", "12月" };this.Application.SheetsInNewWorkbook = 4;Nowbook = this.Application.Workbooks.Add();for (int i = 1; i <= 4; i++){Nowbook.Sheets[i].Name = shName[i - 1];Nowbook.Sheets[i].Range["B1"].Resize[1, arr.Length] = arr;Nowbook.Sheets[i].Range["B2"] = "品名";}Nowbook.SaveAs("C:\\" +"存货明细.xlsx");Nowbook.Close(true);42-1 打开指定的工作簿int wkCount = this.Application.Workbooks.Count;for (int i = 1; i <= wkCount; i++){if (this.Application.Workbooks[i].Name == "123.xlsx"){MessageBox.Show("123工作簿已经打开");}}this.Application.Workbooks.Open("C:\\" + "123.xlsx");。
vsto的vb实例VSTO(Visual Studio Tools for Office)是一种用于开发Microsoft Office应用程序的工具集,它允许开发人员使用Visual Studio来创建自定义的Office解决方案。
在VSTO中使用VB(Visual Basic)语言来编写Office解决方案是非常常见的。
下面我将为你提供一个简单的VSTO的VB实例,以便你了解如何使用VB语言来开发基于VSTO的Office解决方案。
在这个示例中,我们将创建一个简单的Excel插件,它将在单元格A1中显示"Hello, VSTO!"。
首先,你需要在Visual Studio中创建一个新的VSTO项目。
选择“文件” > “新建” > “项目”,然后在“安装的”模板下选择“Visual Basic” > “Office/SharePoint” > “VSTO 项目”。
给项目命名并点击“确定”。
接下来,你需要在解决方案资源管理器中右键点击项目,选择“添加” > “新项”,然后选择“这台计算机上的模板” > “Office” > “Excel 2013 工作表”。
这将创建一个新的Excel工作表,你可以在其中编写你的VSTO代码。
在新创建的Excel工作表中,双击“Sheet1.vb”以打开代码文件。
然后,你可以编写以下代码来在单元格A1中显示"Hello, VSTO!":vb.Imports Microsoft.Office.Tools.Excel.Public Class Sheet1。
Private Sub Sheet1_Startup() Handles Me.Startup.Me.Range("A1").Value = "Hello, VSTO!"End Sub.End Class.在这个示例中,我们使用了VSTO提供的Excel对象模型来访问单元格并设置其值。
E c e l V B A编程的常用代码The final revision was on November 23, 2020Excel VBA编程的常用代码用过VB的人都应该知道如何声明变量,在VBA中声明变量和VB中是完全一样的!使用Dim语句Dim a as integer '声明a为整型变量Dim a '声明a为变体变量Dim a as string '声明a为字符串变量Dim a as currency ,b as currency ,c as currency '声明a,b,c为货币变量......声明变量可以是:Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(当前不支持)、Date、String(只限变长字符串)、String * length(定长字符串)、Object、Variant、用户定义类型或对象类型。
强制声明变量Option Explicit说明:该语句必在任何过程之前出现在模块中。
声明常数用来代替文字值。
Const' 常数的默认状态是 Private。
Const My = 456' 声明 Public 常数。
Public Const MyString = "HELP"' 声明 Private Integer 常数。
Private Const MyInt As Integer = 5' 在同一行里声明多个常数。
Const MyStr = "Hello", MyDouble As Double =选择当前单元格所在区域在EXCEL97中,有一个十分好的功能,他就是把鼠标放置在一个有效数据单元格中,执行该段代码,你就可以将连在一起的一片数据全部选中。
只要将该段代码加入到你的模块中。
返回当前单元格中数据删除前后空格后的值sub my_trimmsgbox Trimend sub单元格位移sub my_offset(0, 1).Select'当前单元格向左移动一格(0, -1).Select'当前单元格向右移动一格(1 , 0).Select'当前单元格向下移动一格(-1 , 0).Select'当前单元格向上移动一格end sub如果上述程序产生错误那是因为单元格不能移动,为了解除上述错误,我们可以往sub my_offset 之下加一段代码 on error resume next注意以下代码都不再添加sub “代码名称” 和end sub请自己添加!给当前单元格赋值= "你好!!!"给指定单元格赋值例如:A1单元格内容设为"HELLO"Range("a1").value="hello"又如:你现在的工作簿在sheet1上,你要往sheet2的A1单元格中插入"HELLO"1.sheets("sheet2").selectrange("a1").value="hello"或2.Sheets("sheet1").Range("a1").Value = "hello"说明:被选中,然后在将“HELLO"赋到A1单元格中。
visual studio2010 vb excel代码以下是一个使用Visual Studio 2010中的代码来操作Excel的示例:vbImports Microsoft.Office.InteropPublic Class Form1Private Sub Button1_Click(sender As Object, e As EventArgs)Handles Button1.Click'创建Excel应用程序对象Dim excelApp As New Excel.Application'打开Excel文件Dim workbook As Excel.Workbook =excelApp.Workbooks.Open("C:\example.xlsx")'选择工作表Dim worksheet As Excel.Worksheet = workbook.Worksheets("Sheet1") '设置单元格的值worksheet.Range("A1").Value = "Hello"worksheet.Range("B1").Value = "World"'保存Excel文件workbook.Save()'关闭Excel应用程序excelApp.Quit()End SubEnd Class在此示例中,我们使用了Microsoft Office Interop库来操作Excel。
首先,我们创建了一个Excel应用程序对象,然后打开一个Excel文件并选择要操作的工作表。
接下来,我们设置了单元格的值,然后保存Excel文件并关闭Excel应用程序。
Excel与VBA编程中的常用代码用过VB的人都应该知道如何声明变量,在VBA中声明变量和VB中是完全一样的!使用Dim语句Dim a as integer '声明A为整形变量Dim a '声明A为变体变量Dim a as string '声明A为字符串变量Dim a,b,c as currency '声明A,b,c为货币变量......声明变量可以是:Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(当前不支持)、Date、String (只限变长字符串)、String * length(定长字符串)、Object、Variant、用户定义类型或对象类型。
强制声明变量Option Explicit说明:该语句必在任何过程之前出现在模块中。
--------------------------------------------------------------------------------声明常数,用来代替文字值。
Const' 常数的默认状态是 Private。
Const My = 456' 声明 Public 常数。
Public Const MyString = "HELP"' 声明 Private Integer 常数。
Private Const MyInt As Integer = 5' 在同一行里声明多个常数。
Const MyStr = "Hello", MyDouble As Double = 3.4567--------------------------------------------------------------------------------在EXCEL97中,有一个十分好的功能,他就是把鼠标放置在一个有效数据单元格中,执行该段代码,你就可以将连在一起的一片数据全部选中。
Excel VBA常用代码及解释(1) Option Explicit解释:强制对模块内所有变量进行声明(2) Option Base 1解释:指定数组的第一个下标为1(3) On Error Resume Next解释:忽略错误继续执行VBA代码,避免出现错误消息(4) On Error GoTo 100解释:当错误发生时跳转到过程中的某个位置(5) On Error GoTo 0解释:恢复正常的错误提示(6) Application.DisplayAlerts=False解释:在程序执行过程中使出现的警告框不显示(7) Application.DisplayAlerts=True解释:在程序执行过程中恢复显示警告框(8) Application.ScreenUpdating=False解释:关闭屏幕刷新(9) Application.ScreenUpdating = True解释:打开屏幕刷新(10) Workbooks.Add()解释:创建一个新的工作簿(11) Workbooks(“book1.xls”).Activate解释:激活名为book1的工作簿(12) ThisWorkbook.Save解释:保存工作簿(13) ThisWorkbook.close解释:关闭当前工作簿(14) ActiveWorkbook.Sheets.Count解释:获取活动工作薄中工作表数(15) Active 解释:返回活动工作薄的名称(16) This 解释:返回当前工作簿名称(17) ThisWorkbook.FullName解释:返回当前工作簿路径和名(18) edRange.Rows.Count解释:当前工作表中已使用的行数(19) Rows.Count解释:获取工作表的行数(20) Sheets(Sheet1).Name= “Sum”解释:将Sheet1命名为Sum(21) ThisWorkbook.Sheets.Add Before:=Worksheets(1) 解释:添加一个新工作表在第一工作表前(22)ActiveSheet.MoveAfter:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count )解释:将当前工作表移至工作表的最后(23) Worksheets(Array(“sheet1”,”sheet2”)).Select解释:同时选择工作表1和工作表2(24) Sheets(“sheet1”).Delete或 Sheets(1).Delete解释:删除工作表1(25) edRange.FormatConditions.Delete解释:删除当前工作表中所有的条件格式(26) Cells.Hyperlinks.Delete解释:取消当前工作表所有超链接(27) ActiveCell.CurrentRegion.Select选择当前活动单元格所包含的范围,等同于快捷键Ctrl+A(28) Cells.Select解释:选定当前工作表的所有单元格(29) Range(“A1”).ClearContents解释:清除活动工作表上单元格A1中的内容。
删除B列中字符串数值少于21的单元格所在的行Sub 删除行()r = Range("B65536").End(xlUp).Row '行数For h = r To 1 Step -1If Cells(h, 2) < 21 Then Cells(h, 2).EntireRow.DeleteNextEnd Sub-------------------------【工作表合并】将同一工作簿中的所有工作表合并到一个工作表中新建一个工作表,写入代码[在新建的工作表标签处右键查看代码(找不到的直接按一下alt+F11) 把下面的代码复制进去然后点上面的运行运行子程序即可]:Sub 合并当前工作簿下的所有工作表()Application.ScreenUpdating = FalseFor j = 1 To Sheets.CountIf Sheets(j).Name <> ThenX = Range("A65536").End(xlUp).Row + 1Sheets(j).UsedRange.Copy Cells(X, 1)End IfNextRange("B1").SelectApplication.ScreenUpdating = TrueMsgBox "当前工作簿下的全部工作表已经合并完毕!", vbInformation, "提示"End Sub*********************************************************代码这样写也行:Sub c()For i = Sheets.Count To 2 Step -1Sheets(i).SelectSheets(i).UsedRange.CopySheets(1).SelectCells(Cells(65000, 1).End(xlUp).Row + 1, 1).SelectActiveSheet.Paste'Sheets(i).DeleteNext iEnd Sub************************************************************把一个工作簿中的所有表单合并成一个表单,怎么去掉重复的表头、标题行?方法如下:Sub c()For i = Sheets.Count To 2 Step -1Sheets(i).UsedRange.Offset(1).Copy Sheets(1).Cells(65536, 1).End(xlUp).Offset(1)Next iEnd Sub说明:函数OFFSET(reference,rows,cols,height,width)以指定的引用为参照系,通过给定偏移量得到新的引用。
前言我们平时在工作表xx的公式xx常常使用函数,Excel自带的常用的函数多达300多个,功能强大,丰富多彩,但是在VBAxx不能直接应用,必须在函数名前面加上对象,比如:Application.WorksheetFunction.Sum(arg1,arg2,arg3)。
而能在VBAxx直接应用的函数也有几十个,下面将逐一详细介绍常用的40个VBA函数,以供大家学习参考。
第1.1例ASC函数一、题目:要求编写一段代码,运行后得到字符串”Excel”的首字母和”e”的ASCII值。
二、代码:Sub示例_1_01()Dim myNum1%, myNum2%myNum1 = Asc("Excel")'返回69myNum2 = Asc("e")'返回101[a1] = "myNum1= ": [b1] = myNum1[a2] = "myNum2= ": [b2] = myNum2End Sub三、代码详解1、Sub示例_1_01():宏程序的开始语句。
2、Dim myNum1%, myNum2%:变量myNum1和myNum2声明为整型变量。
也可以写为Dim myNum1 As Integer。
Integer变量存储为16位(2个字节)的数值形式,其范围为-32,768到32,767之间。
Integer的类型声明字符是百分比符号(%)。
3、myNum1 = Asc("Excel"):把Asc函数的值赋给变量myNum1。
Asc函数返回一个Integer,代表字符串中首字母的字符的ASCII代码。
语法Asc(string)必要的string(字符串)参数可以是任何有效的字符串表达式。
如果string中没有包含任何字符,则会产生运行时错误。
4、myNum2 = Asc("e"):把Asc函数的值赋给变量myNum2。
VSTO学习笔记一:用VISUAL BASIC 2010编写EXCEL自定义函数(加载项)by 哪一站本文大部分代码来自于《VSTO开发指南》,只是VSTO开发指南中的开发环境为VS2005和OFFICE 2003,本文的开发环境为VS2010和OFFICE 2010 32位版。
操作系统为WIN7 64位学习VSTO的主要目的,主要是除了VBA之外,多一种开发EXCEL自定义函数的手段,我在用VBA开发EXCEL的过程中,发现VBA的执行效率太低,因为VBA是宏,是解释执行的,我曾经在用VBA开发给用友U8导入发票时,导入几十张发票就花了二个小时的时间,后来利用F417的一个XLL加载项去开发,只用了几秒钟时间。
对比强烈。
这些是废话,现在开始:启动VS2010,默认设置环境为VISUAL BASIC,然后从菜单中选择:文件-新建项目,见下图:在打开的窗口中点击VISUAL BASIC下的类库,见下图:点击确定后,在解决方案资源管理器中右键单击CLASSLIBRARY1选择添加引用见下图:在出现的窗口中点击COM页,然后点击“MICROSOFT EXCEL 14.0 OBJECT LIBRARY”,见下图:在弹出的窗口中输入如下代码:Imports SystemImports System.Runtime.InteropServicesImports Microsoft.Win32Imports Excel = Microsoft.Office.Interop.Excel<ClassInterface(classinterfacetype.AutoDual),ComVisible(True)>Public Class Class1 Public Function MYFUNCTION(ByVal number1 As Double,ByVal number2 AsDouble) As Double Return number1 * number2End Function<ComRegisterFunctionAttribute()>Public Shared Sub RegisterFunction(ByVal type As Type) Registry.ClassesRoot.CreateSubKey(getsubkeyname(type))End Sub<ComUnregisterFunctionAttribute()>Public Shared Sub UnregisterFunction(ByVal type As Type)Registry.ClassesRoot.DeleteSubKey(getsubkeyname(type))End SubPrivate Shared Function GetSubKeyName(ByVal type As Type) As StringDim s As New System.Text.StringBuilder()s.Append("CLSID\{")s.Append(type.GUID.ToString().ToUpper())s.Append("}\Programmable")Return s.ToString()End FunctionEnd Class本文中自定义了一个用于EXCEL的函数MYFUNCTION,用于返回两个数的乘积,其余的SUB 和FUNCTION,都是COM开发的内容,这里只需照搬就行,实际开发中,只需把注意力集中在MYFUNCTION的实现即可。
Excel VBA常用代码VSTO版(C#)1-1使用Range属性this.Range["A3:F6, B1:C5"].Select();1-2使用Cells属性for(int icell=1;icell<=100;icell++){this.Application.Worksheets[2].cells[icell, 1].value = icell;}1-3使用快捷记号#N/A1-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属性edRange.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.Range rng = this.Range["A65535"].End[Excel.XlDirection.xlUp];MessageBox.Show("A列中最后一个非空单元格是" + rng.Address[0, 0] + ",行号" + rng.Row.ToString() + ",数值" + rng.Text);4-1 定位单元格Excel.Range rng = edRange.SpecialCells(Excel.XlCellType.xlCellTypeFormulas);rng.Select();MessageBox.Show("工作表中有公式的单元格为:" + rng.Address);5-1 查找单元格Excel.Range rng, Rng;Rng = this.Range["A:A"];string strFind = 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……End with语句.5-1 查找单元格重复数据Excel.Range rng, Rng;string FindAddress = string.Empty;Rng = this.Range["A:A"];string strFind = 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.Range rng = 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.Range rng = this.Application.Worksheets[3].Range["A1"];rng.PasteSpecial(Excel.XlPasteType.xlPasteValues);this.Application.CutCopyMode = Excel.XlCutCopyMode.xlCut;8-2 直接赋值的方法Excel.Range rng = this.Application.Worksheets[3].Range["A1"];Excel.Range Rng = this.Range["A1"].CurrentRegion;rng.Resize[Rng.Rows.Count, Rng.Columns.Count].Value = Rng.Value;9-1 单元格自动进入编辑状态先在”VSTO 设计器生成的代码”内加入this.SelectionChange += new Excel.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.Font rng = this.Range["A1"].Font; = "宋体";rng.FontStyle = "Bold";rng.Size = 18;rng.ColorIndex = 3;rng.Underline = 2;11-2 设置单元格内部格式Excel.Interior rng = this.Range["A1"].Interior;rng.ColorIndex = 3;rng.Pattern = Excel.XlPattern.xlPatternCrissCross;rng.PatternColorIndex = 6;11-3 为单元格区域添加边框Excel.Borders rng = this.Range["B4:G10"].Borders;rng.LineStyle = Excel.XlLineStyle.xlContinuous;rng.Weight = Excel.XlBorderWeight.xlThin;rng.ColorIndex = 5;Excel.XlColorIndex col = (Excel.XlColorIndex)5;this.Range["B4:G10"].BorderAround2(Excel.XlLineStyle.xlContinuous,Excel.XlBorderWeight.xlMedium,col);11-3 为单元格区域应用多种边框格式Excel.XlColorIndex col = (Excel.XlColorIndex)5;Excel.Border rng = this.Range["B4:G10"].Borders[Excel.XlBordersIndex.xlInsideHorizontal];Excel.Border Rng = 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);。