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