Excel VBA常用代码VSTO
Excel VBA常用代码VSTO版20150425
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的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对象模型来访问单元格并设置其值。
EcelVBA编程的常用代码
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 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编程中的常用代码
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常用代码及解释
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中的内容。
EXCEL常用VBA代码
删除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)以指定的引用为参照系,通过给定偏移量得到新的引用。
vsto excel操作
Range rangeStyle = (Range)edRange[changeStart, 1];
if (rangeStyle != null)
{
workSheet.Sort.MatchCase = false;
workSheet.Sort.Orientation = Microsoft.Office.Interop.Excel.XlSortOrientation.xlSortColum rangeStyle.Value2;
if (styleValue != null)
{
Characters changeStyle = rangeStyle.get_Characters(0, rangeStyle.Value2.ToString().Length);
pivotTable.AddFields("Amount", miss, miss, true);
PivotField pivotField = (PivotField)pivotTable.PivotFields("Name");
pivotField.Orientation = XlPivotFieldOrientation.xlRowField;
8.单元格区域拷贝:
worksheetRange = worksheet.get_Range(columnName, miss);
newWorksheetRange = newWorkSheet.get_Range(columnName, miss);
workSheet.Sort.SortMethod = Microsoft.Office.Interop.Excel.XlSortMethod.xlPinYin;
vba常用代码大全
前言我们平时在工作表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自定义函数(加载项)
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的实现即可。
EXCELVBA常用代码集
EXCELVBA常用代码集1.显示活动工作簿名称MsgBox "当前活动工作簿是" & 2.保存活动工作簿Activeworkbook.Save3.保存所有打开的工作簿关闭EXCELFor Each W in Application.WorkbooksW.SaveNext WApplication.Quit4.将网格线设置为蓝色ActiveWindow.GridlineColorIndex = 55.将工作表sheet1隐藏Sheet1.Visible = xlSheetVeryHidden6.将工作表Shtte1显示Sheet1.Visible = xlSheetVisible7.单击某单元格,该单元格所在的行以蓝色背景填充,字体颜色为白色Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)If Target.Row >= 2 Then’第二行以下的区域On Error Resume Next[ChangColor_With1].FormatConditions.Delete = "ChangColor_With1"With [ChangColor_With1].FormatConditions.Delete.Add xlExpression, , "TRUE".Item(1).Interior.ColorIndex = 5.Item(1).Font.ColorIndex = 2End WithEnd IfEnd Sub8.使窗体在启动的时候自动最大化Private Sub UserForm_Initialize()Application.WindowState = xlMaximizedWith ApplicationMe.Top = .TopMe.Left = .LeftMe.Height = .HeightMe.Width = .WidthEnd WithEnd Sub9.不保存工作簿退出EXCELApplication.DisplayAlerts = FalseApplication.Quit10.使窗体的关闭按纽不好用Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)If CloseMode = vbformcontrdmenu ThenMsgBox "请用关闭按钮关闭窗口!!", 64, "提示"Cancel = TrueEnd IfEnd Sub11.使窗体在3秒后自动关闭Private Sub UserForm_Activate()Application.Wait Now + TimeValue("00:00:03")UserForm1.HideEnd Sub12.启动窗体的时候自动使Label1显示Sheet1工作表3列,8行的内容Private Sub UserForm_Activate()Label1.Caption = Sheets("sheet1").Cells(3, 8)End Sub13.让按纽CommandButton1在窗体上以不可用状态显示CommandButton1.Enabled = False14.让按纽Commandbutton1在窗体上以隐藏方式存在CommandButton10.Visible = False15.点击Commandbutton1按纽进入”工资”工作表Sheets("工资").Select16.在Textbox1中输入数据,窗体可显示出”工资”工作表中与输入内容关联的项Private Sub TextBox1_Change()For X = 1 To Application.CountA(Sheets("工资").Range("a:a")) If Sheets("工资").Cells(X, 1) = TextBox1.Text Then’在工资表第一列查找与Textbox1输入相符的项Label2.Caption = Sheets("工资").Cells(X, 2)’在Label2中显示Textbox1数据所在的第二列的数据Label7.Caption = Sheets("工资").Cells(X, 3)’在Label2中显示Textbox1数据所在的第三列的数据End IfNextEnd Sub17.使EXCEL启动的时候自动最小化/最大化Private Sub Workbook_Open()Application.WindowState = xlMinimized’最小化Application.WindowState = xlMaximized’最大化End Sub18.在Label25以数字的形式显示TextBox12×Label14的结果Label25.Caption = Val(TextBox12.Text) * Val(Label14.Caption)19.单选按纽名与Sheet6工作表名相同OptionButton6.Caption = 20.”登陆”窗体的显示,隐藏登陆.Show’显示登陆.Hide’隐藏21.使窗体的标题栏不显示(1)插入类模块” CFormChanger”代码如下:Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPrivate Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As LongPrivate Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As LongPrivate Const GWL_STYLE As Long = (-16)Private Const WS_CAPTION As Long = &HC00000Dim hWndForm As Long……………………………………………………………………………………………………………..Public Property Set Form(oForm As Object) '29If Val(Application.Version) < 9 ThenhWndForm = FindWindow("ThunderXFrame", oForm.Caption)ElsehWndForm = FindWindow("ThunderDFrame", oForm.Caption)End IfSetFormStyleEnd Property……………………………………………………………………………………………………………….Private Sub SetFormStyle()Dim iStyle As Long, hMenu As Long, hID As Long, iItems As IntegeriStyle = GetWindowLong(hWndForm, GWL_STYLE)iStyle = iStyle And Not WS_CAPTIONiStyle = iStyle Or WS_THICKFRAMESetWindowLong hWndForm, GWL_STYLE, iStyleDrawMenuBar hWndFormEnd Sub(2)在所在窗体代码里声明Dim oFormChanger As New CFormChanger(3).在窗体的Activate事件中插入代码Set oFormChanger.Form = MeMe.SpecialEffect = fmspecia1EffectRaised以上三步每一步都不可缺少,否则不能完成.22.单击某单元格,该单元格所在的行与列都以蓝色背景填充Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)If Target.Row >= 2 Then’第二行以下的所有列On Error Resume Next[ChangColor_With2].FormatConditions.Delete[ChangColor_With3].FormatConditions.Delete = "ChangColor_With2" = "ChangColor_With3"With [ChangColor_With2].FormatConditions.Delete.Add xlExpression, , "TRUE".Item(1).Interior.ColorIndex = 5End WithWith [ChangColor_With3].FormatConditions.Delete.Add xlExpression, , "TRUE".Item(1).Interior.ColorIndex = 5End WithEnd IfEnd Sub23.显示动态时间(1)插入窗体Userform1及Label1并在窗体声明中插入Option ExplicitPublic nextRun As Date(2)在窗体Activate事件中插入Showtime(3)在窗体QueryClose事件中插入Application.OnTime nextRun, "showtime", schedule:=False (4)插入模块Module1并输入Option ExplicitSub showtime()bel1 = NowUserForm1.RepaintDoEventsUserForm1.nextRun = Now + 1 / 86400Application.OnTime UserForm1.nextRun, "showtime" End Sub24.加载Combobox1选项ComboBox1.AddItem "收入型"ComboBox1.Additem “支出型”25.使Textbox1自动程输入状态显示(有光标闪动)TextBox1.SetFocus26.打开C盘目录Shell "explorer.exe C:\", 1。
EXCEL VBA编程的常用代码
Excel VBA编程的常用代码时间:2009-11-2721:18:01来源:本站作者:未知我要投稿我要收藏投稿指南具体的步骤是,代码从活动工作表上活动单元格周围的当前单元格区域中读取数据。
宏将这些数据存储在一个数组中,计算每一行和每一列中的单元格总数,然后将输出显示在工作表中。
数组的大小由当前区域中的单元格数量决定。
注意:此宏不会在工作表中添加任何公式,因此如果该范围内的单元格总数有变化,则必须重新运行宏。
使用以下示例之前,请执行以下步骤:1.打开一个新工作簿。
2.在“工具”菜单中,指向“宏”,然后单击“Visual Basic编辑器”(或者简单地按下ALT+F11组合键)。
在“Visual Basic编辑器”中的“插入”菜单中,单击“模块”。
将以下示例代码键入或粘贴到模块中:Sub TotalRowsAndColumns()'此宏假定您已从'要计算单元格总数的矩形区域内'选择了一个单元格或一组单元格。
行和列的单元格总数将出现在'当前区域下面的行和右侧的列中。
Dim r As IntegerDim c As IntegerDim i As IntegerDim j As IntegerDim myArray As Variant'将myArray声明为变量将使数组可以接收'一组单元格。
此时,数组将自动转换为'以下标myArray(1,1)开始的数组。
'指当前所选单元格周围的区域。
With Selection.CurrentRegionr=.Rows.Countc=.Columns.Count'重新计算总行数和总列数并将结果存储到数组中。
myArray=.Resize(r+1,c+1)'在下面的嵌套循环中,变量i跟踪'行号,变量j跟踪'列号。
j在可用列中每循环一次,'i就递增一,而j'则重新从一到c循环一次。
VSTO从文档级项目访问VBA代码
பைடு நூலகம்
Private Sub Sheet1_Startup() Handles Me.Startup End Sub Private Sub Sheet1_Shutdown() Handles Me.Shutdown End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Application.Run ("aaa") Application.Run ("Sheet1.bbb") Application.Run ("c") End Sub End Class
1新建一个启用宏的工作薄比如工作薄1xlsm输入以下代码新建一个模块依次在模块工作表模块thisworkbook模块中输入测试代码用来在vsto中调用
VSTO从文档级项目访问 VBA代码
1、新建一个启用宏的工作薄,比如工作薄1.xlsm,输入以下代码,新建一个模块,依次在模块、 工作表模块、thisworkbook模块中输入测试代码,用来在VSTO中调用: Public Sub aaa()
MsgBox ("调用模块中的过程") End Sub Public Sub bbb()
MsgBox ("调用工作表中的过程") End Sub Public Sub ccc()
MsgBox ("调用工作薄中的过程") End Sub 2、使用写入代码的工作薄1.xlsm新建文档级项目,添加代码: Public Class Sheet1
vsto excel 例子 -回复
vsto excel 例子-回复"VSTO Excel 例子"是指使用Visual Studio Tools for Office (VSTO)开发的Excel示例。
VSTO是一个强大的工具,允许开发人员使用.NET框架和Visual Studio集成开发环境来创建自定义的Excel解决方案。
这篇文章将一步一步回答关于VSTO Excel示例的问题,并深入探讨如何使用VSTO 进行Excel开发。
第一步:什么是VSTO?Visual Studio Tools for Office (VSTO)是一套工具和类型库,用于开发基于Microsoft Office的解决方案。
它允许开发人员使用.NET框架和Visual Studio集成开发环境来创建自定义的Office解决方案。
VSTO提供了许多功能和工具,可以简化Office开发过程。
第二步:为什么使用VSTO进行Excel开发?使用VSTO进行Excel开发有许多好处。
首先,VSTO提供了直观的图形界面和丰富的库,使开发人员能够更轻松地创建自定义的Excel功能。
其次,VSTO基于.NET框架,可以使用C#或等常见的编程语言进行开发,这使得开发人员可以利用熟悉的编程语言来创建高效的解决方案。
此外,VSTO还提供了与其他Office应用程序的集成能力,可以实现更复杂的功能。
第三步:如何使用VSTO进行Excel开发?使用VSTO进行Excel开发需要先安装Visual Studio和VSTO扩展。
安装完成后,打开Visual Studio并创建一个新的VSTO Excel项目。
接下来,我们可以使用工具箱中的控件和设计器来创建用户界面。
例如,我们可以添加按钮、文本框和下拉列表框等控件来与Excel进行交互。
一旦我们完成了用户界面的设计,我们可以使用编程语言(如C#)来编写代码来处理Excel数据和功能。
例如,我们可以编写代码来读取和写入单元格数据,创建和格式化工作表,执行复杂的计算和分析等。
ExcelVBA常用代码VSTO版
Excel VBA常用代码VSTO版(C#)1-1使用Range属性["A3:F6, B1:C5"].Select();1-2、1-3使用Cells属性for(int icell=1;icell<=100;icell++){1].value = icell;};1-4使用快捷记号#N/A1-5使用Offset属性】["A1:A3"].Offset[3, 3].Select();1-6使用Resize属性["A1"].Resize[3, 3].Select();1-7】1-8使用Union属性"A1:D4"], ["E5:H8"]).Select();1-9使用UsedRange属性1-10使用CurrentRegion属性>["A5"].();2-1 使用Select方法"A1:B10"].Select();$2-2 使用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语句.…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"].();= 使用选择性粘贴["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;(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 動態的數據有效性{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 判斷單元格公式是否存在錯誤{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;();= 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 使用工作的索引号。
VSTO for excel入门基础知识
常用语法IF 语句private void button11_Click(object sender, EventArgs e) {int i;i = -25;//-2147483648 到 2147483647 ,有符号 32 位整数if (i > 0){MessageBox.Show(i + "是正数");}else if (i == 0){MessageBox.Show(i + "是零");}else{MessageBox.Show(i + "是负数");}//更多分之使用Switch结构,类似select case}While语句private void button12_Click(object sender, EventArgs e) {int i;i = 0;while (i < 10)//括号内条件成立,不断执行花括号内容{i = i + 1;}this.button14.Text = i.ToString();//}FOR语句private void button13_Click(object sender, EventArgs e) {int i;//;int sum = 0;for (i = 1; i <= 10; i++)//i++自加的意思if (i <= 5)//if (i <=5) {break;}{sum = sum + i;}else{break;//跳出FORB不再执行。
}}this.button13.Text = sum.ToString();}FOR语句private void button14_Click(object sender, EventArgs e){//int i;这句声明变量,作用于整个单机过程int sum = 0;for (int i = 1; i <= 10; i++)//也可在FOR循环内部声明直接加变量int,只做用内部{if (i==6)//i等于6{continue;}//当I=6跳过不加,到7的时候继续加,比55小于6//严格区分break 和continue语句{sum = sum + i;}}this.button13.Text = sum.ToString();}FOR Each 语句private void button15_Click(object sender, EventArgs e){int[] arr = { 2, 5, 7 };//声明数组。
VSTO开发指南(VB2013版)第三章Excel编程
VSTO开发指南(VB2013版)第三章Excel编程通过前两章的内容,有了一定的基础,但进入第三章,实例的步骤非常多,并且随着VS版本的升级,部分功能菜单界面发生了很大变化,所以,第三章的案例我将逐步编写!实例3.1的目标就是给Excel写一个加载宏,实质就是写一个Excel函数,并通过在注册表中注册,实现像自带函数那样的功能。
步骤一:Visual Studio 2013创建AutomationAddin类库。
文件——新建——项目——模板——Visual Basic——类库——名称中输入“AutomationAddin”——确定。
步骤二:在class1.vb代码文件中书写代码:Imports SystemImports System.Runtime.InteropServicesImports Microsoft.Win32<ClassInterface(ClassInterfaceType.AutoDual), ComVisible(True)> _Public Class MyFunctionsPublic Function MultiplyNTimes(ByVal number1 As Double, ByVal number2 As Double, ByVal timesToMultiply As Double) As DoubleDim result As Double = number1For i As Double = 0To timesToMultiplyresult = result * number2NextReturn resultEnd 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), False)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步骤三:项目——“AutomationAddin”属性——>编译——>选中“为COM互操作注册”复选框(在编译页的最下端)步骤四:生成——生成解决方案。
EcelVBA编程的常用代码
Excel 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 = 3.4567选择当前单元格所在区域在EXCEL97中,有一个十分好的功能,他就是把鼠标放置在一个有效数据单元格中,执行该段代码,你就可以将连在一起的一片数据全部选中。
只要将该段代码加入到你的模块中。
Sub My_SelectSelection.CurrentRegion.SelectEnd sub返回当前单元格中数据删除前后空格后的值sub my_trimmsgbox Trim(ActiveCell.Value)end sub单元格位移sub my_offsetActiveCell.Offset(0, 1).Select'当前单元格向左移动一格ActiveCell.Offset(0, -1).Select'当前单元格向右移动一格ActiveCell.Offset(1 , 0).Select'当前单元格向下移动一格ActiveCell.Offset(-1 , 0).Select'当前单元格向上移动一格end sub如果上述程序产生错误那是因为单元格不能移动,为了解除上述错误,我们可以往sub my_offset 之下加一段代码on error resume next注意以下代码都不再添加sub “代码名称” 和end sub请自己添加!给当前单元格赋值ActiveCell.Value = "你好!!!"给指定单元格赋值例如:A1单元格内容设为"HELLO"Range("a1").value="hello"又如:你现在的工作簿在sheet1上,你要往sheet2的A1单元格中插入"HELLO"1.sheets("sheet2").selectrange("a1").value="hello"或2.Sheets("sheet1").Range("a1").Value = "hello"说明:1.sheet2被选中,然后在将“HELLO"赋到A1单元格中。
EcelVBA编程的常用代码
Excel 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 = 3.4567选择当前单元格所在区域在EXCEL97中,有一个十分好的功能,他就是把鼠标放置在一个有效数据单元格中,执行该段代码,你就可以将连在一起的一片数据全部选中。
只要将该段代码加入到你的模块中。
返回当前单元格中数据删除前后空格后的值sub my_trimmsgbox Trim(ActiveCell.Value)end sub单元格位移sub my_offsetActiveCell.Offset(0, 1).Select'当前单元格向左移动一格ActiveCell.Offset(0, -1).Select'当前单元格向右移动一格ActiveCell.Offset(1 , 0).Select'当前单元格向下移动一格ActiveCell.Offset(-1 , 0).Select'当前单元格向上移动一格end sub如果上述程序产生错误那是因为单元格不能移动,为了解除上述错误,我们可以往sub my_offset 之下加一段代码on error resume next注意以下代码都不再添加sub “代码名称” 和end sub请自己添加!给当前单元格赋值ActiveCell.Value = "你好!!!"给指定单元格赋值例如:A1单元格内容设为"HELLO"Range("a1").value="hello"又如:你现在的工作簿在sheet1上,你要往sheet2的A1单元格中插入"HELLO"1.sheets("sheet2").selectrange("a1").value="hello"或2.Sheets("sheet1").Range("a1").Value = "hello"说明:1.sheet2被选中,然后在将“HELLO"赋到A1单元格中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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);。