2020.03.29 做一个整理
'#活动单元格后面_插入多行,最后一格参数表示按照下面行的格式插入,默认为按照上一行格式插入 Range(address).EntireRow.Resize(rownumbers).Insert , CopyOrigin:=xlFormatFromRightOrBelow '#chr(10) & chr(13)表示回车,vbyesno之类返回的是vbyes或者vbno值。vbinformation为提示图标,默认为none; 'chr(61)表示=号,chr(34)表示双引号" MsgBox string1 & Chr(10) & Chr(13) & strings2, vbOKOnly + vbInformation ' #调用excel内置函数 Application.WorksheetFunction.Max(range("a1:c18)) ' #复制插入粘贴,仅复制值(建议用宏来查询参数) Sheets("sheetname").Select Range("b" & find1 & ":c" & find1 + find2 - 1).Select #复制的内容处于sheet1的对应单元格中; Selection.Copy Sheets("sheet2").Select #激活要插入的工作表 Range(ActiveCell.Address).Select #激活要复制到的单元格地址 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False '#获得A列有效数据的最后行row和最后一列cloumn, '#备注1: ActiveSheet.UsedRange.Rows.Count得出的结果不一定准确,特别对于格式或者行列编辑操作以后; '#备注2:2003(含)以前的版本,最大行为65536(2^16),最大列为IV ' #备注3:2007(含)以后的版本,最大是1048576(2^20),最大列为XFD,对于数据少的工作表没什么影响,对于大量数据的建议采用后者; Sheets("sheet1").Range("A65536").End(xlUp).Row Sheets("sheet1").Range("IV1").End(xlToLeft).Column '#数据格式设定,建议用带local的本地化设置;其他设置"0.00"(小数点两位数字),"000000"(固定6位字符),"@"(文本字符) With Range("A1").NumberFormat = "0.00" #将数字设置为两位小数; .NumberFormat = "0.00%" #将数字设置为两位小数的百分数; .NumberFormat = "000000" #将数字设置为6位整数(邮编); .NumberFormat = "@" #将数字设置为文本; .NumberFormat = "[DBNum2]" #将数字设置为中文大写; .NumberFormatLocal = "(¥#,##0.00_); [红色] (¥#,##0.00)" #将数字设置为人民币;负值用红色括号标记, .NumberFormatLocal = "¥#,##0.00;[红色]¥-#,##0.00".NumberFormat = "yyyy年m月d日" #设置为日期;负值仅用红色标记 .NumberFormat = "yyyy年m月d日aaaa" #设置为日期星期几; .NumberFormat = "yyyy-m-d dddd" #设置为日期星期几;(英文) .NumberFormat = "mmmm" # 设置英文全称; .NumberFormat = "mmm" #设置英文简称; .NumberFormat = "aaaa" #设置汉语星期; .NumberFormat = "dddd" #设置英语星期; .NumberFormat = ";;" #隐藏单元格数字; .NumberFormat = ";;;" #将隐藏单元格数字和文本 .NumberFormat = "0;-0;;@" #隐藏单元格零值 End With '#Asc字符,对应转换是Chr(数字) asc(字符) #英文及符号的范围为33~127,汉字为负数,60~62为小于等于和大于,34为",38为&,10为回车 '#数组相关 Ubound(数组名) #获取数组的上限值,下限值默认为0,所以总数应该为ubound+1; arr=Range("A1:C18") #把单元格数据赋值给二维数组; arr1=Application.WorksheetFunction.Transpose(arr2) #将数组arr2转置后赋值给另一数组arr1,或者赋值给range("A1:C18")这样的单元格组; #转置类似于单元格的行列转换,简单说一维数组直接赋值给range,只能赋值为一行多列,通过转置则赋值为一列多行,这样的意思。 arr1=array(str1,str2,str3...) #直接赋值给数组 arr1=split(str1,"|") # 采用分隔符对字符串分解,直接赋值给数组,split()(i)只表示数组内部的某一个数据 arr1(x,y)=str1 #直接对数组某一位置赋值 Erase arr1 #清除数组内容 '#可视范围跳转到指定区域:C18会跳到首行可视(不含冻结单元格) Application.Goto reference:=Range("C18"), Scroll:=True '#区域排序 Range("A1:C18").Sort key1:=Range("B1"), Order1:=xlAscending #A-Z排序 #按照B列升序排列,降序为Descending '#工作表相关# sheets("sheet1") #表名称为 sheet1 的表 sheets("sheet1").name #sheet1 取得表名 sheets("sheet1").codename sheeet21 #取得工作表的内部名称 worksheets.count #该工作簿文件中的工作表的总数,整数型 sheets("sheet1").visible=true #隐藏sheet1, Worksheets("sheet1").Delete #删除工作表 Sheets("sheet1").Select #选择工作表 Sheets("sheet1").Copy after:=Sheets(Sheets.Count) #复制当前工作表,放在最后的位置,也可以采用sheet("某表"),放在某表后面 sheets("sheet1").unprotect #取消保护工作表,如果有密码会提示输入密码,另一个参数是protect Range("A1:C18").locked=false #解锁或者锁定单元格,true或者flase sheets("sheet1").EnableSelection=xlUnlockedCells #仅允许选择为锁定单元格,xlNoSelection全部不允许选取, xlNoRestrictions全部允许 '#单元格相关 .ClearContents #clear为清除所有属性(含格式); .clearformats #为清除格式,不清除内容和公式; .clearcomments #为清除标注; .clearcontents #为清除数据、公式,不清除格式; .Delete shift:=xlUp ‘删除单元格,下方的上移, .EntireRow.Delete #所选单元格所在行整行删除 .EntireColum.Delete #所选单元格所在列整列删除 .Borders.LineStyle = 1 #加外框,0为无外框xlNone,1为单实线xlContinuous,双线xlDouble,点划线xlDot,虚线xldash .Borders.Weight = 2 #框线为实线,1-xlhaire,2-xlthine,3-xlmedium,4-xlthick,线粗细 .BorderAround , 3 #外框为3号粗线,分格符是逗号,粗细设置同weight .formula #输出单元格的公式,不是value,如果没公式,则直接输出value .MergeCells #合并单元格,对象为Range,不是cells cells(1,"a").MergeCells #判断是否为合并单元格,返回值为布尔值,Cells对象 activecell.Address(0,0) #活动单元格地址,默认为(1,1),(0,0)表示相对地址,如A1,(1,1)表示绝对地址,如$A$1,对应行列。 ActiveCell.Offset(0, -1) #指定单元格偏移offset,按照行列,正下负上的原则 Cells(row,column).Activate #将指定单元格为活动单元格 activecell.row #活动单元的行号,数字型,如2 activcecell.column #活动单元的列号,数字型,如4 .Interior.Colorindex = xlNone #背景色,索引色 .Font.Colorindex = xlAutomatic #字体颜色,索引色 .Font.Size=9 ’字体大小.Font.Bold=True #字体加粗 .HorizontalAlignment = xlCenter #对齐方式,xlLeft,xlRight '#错误跳转 on error goto handle01 #正常执行的代码 exit sub #跳转处代码 handle01:#发生错误时执行的代码 end sub '#模拟打印后的事件处理 Public isRealPrint As Boolean# 模拟printafter打印事件 Private Sub Workbook_BeforePrint(Cancel As Boolean) If Not isRealPrint Then # 打印前需要处理代码段,例如打印前将某些表格自动隐藏 isRealPrint = True ThisWorkbook.PrintOut # 真实的打印 会再一次进入BeforePrint事件。但由于isRealPrint全局变量已经设置为了True, 所以只是打印而已 # 打印后的处理代码段,打印后将某些表格恢复显示 Cancel = True # 取本次打印 isRealPrint = False End If End Sub ' #文件操作相关 Open "pathname/filename" For Output As #1 output为写入模式,Append为追加,Input为读取 print #1 string1 把string1文本写入文件一行 close #1 关闭文件 '#网络操作相关 ActiveWorkbook.FollowHyperlink URL页面 #浏览器打开URL1页面; ' #读取网页源代码 With CreateObject("MSXML2.XMLHTTP") .Open "GET", URL1, False .Send string1 = StrConv(.Responsebody, vbUnicode) #获得网页源代码内容 code1 = .Status If code1 = 404 Then 出现404错误或者数字不够 #网页404错误处理代码 End If End With '#定时操作处理,这段代码应写在function-name自身内部,这样可以自动调用,同时还需要在checkbox1的change事件中执行call function-name’ '#执行的规则是:checkbox的change触发call function-name,然后再funcitiona-name内部循环执行,如果检测到checkbox手动取消,则停止执行; If CheckBox1.Value = True Then Application.OnTime Now + TimeValue("00:00:05"), "function-name" #每5秒后自动执行funcition-name的代码 Else Application.OnTime Now + TimeValue("00:00:05"), "zhxx", , False #停止 Exit Sub Endif