结束exit语句

  • exit do ’ 结束do循环
  • eixt for ’ 结束for循环
  • exit sub ’ if condition then ~~~ : end end是结束整个程序。exit sub只是结束这个过程。
  • exit function ’ 结束函数运行
sub test()
	num = 1
	if num=1 then exit sub   ' 如果num的值为1,则结束过程,下面的语句不会执行
	debug.print "do other things"
end sub
  • for循环1:
    exit for 表实结束for循环,可以结合if判断结束循环。
    for i = 1 to n

    next
  • for循环2,遍历的变量必须是变体型变量variable,不然会报错
    for each var in list

    next
  • do循环类型1:
    do while +条件 while表示符合条件时执行循环

    loop
  • do循环类型2:
    do until + 条件 until表示当符合条件时跳出循环

    loop
  • do循环类型3:
    使用if + exit do 结束循环。
    do
    if + 条件
    exit do
    end if
    loop
  • do循环4:
    do

    loop until+ 条件 while和until灵活使用,一个符合条件执行循环,一个符合条件跳出循环。
sub test()
' 示例:从1打印到99
num = 1
do while num<100 
	debug.print num    
	num = num + 1
end sub
.Range("a6:at6").Copy
.Range("a7:a7").PasteSpecial Paste:=xlPasteFormats

shell打开txt文件

Shell "Notepad.exe " & f, vbNormalFocus	' f:txt文件完整路径

选择性粘贴为值

With ActiveSheet.UsedRange
    .Copy
    .PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False		'复制后要清空剪切板,不然再操作复制,会出错。
End With
on error resume next		' 遇到错误忽略继续
on error goto line		' 遇到错误跳转
on	error goto 0		' 遇到错误报错。可以再on error resume next 后调用恢复报错。
' goto是跳转语句,也可以结合判断使用
If VBA.IsError(Range("A1").Value) = True Then		' 判断单元公式返回的是否是错误值
ActiveCell.AddComment ("Hello")  

自动调整列宽

Range("a1:h1").EntireColumn.AutoFit

公式自动向下填充

Cells(2, 3).Formula = "=a2&b2"	输入公式
Range(Cells(2, 3), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 3)).FillDown	' 使用filldown公式向下填充
range("a2:b" & usedrange.rows.count).filldown   ' 假设分别在a1和b1单元格输入公式的情况下,下面单元格自动填充

隐藏excel网格线,隐藏行列

ActiveWindow.DisplayGridlines = False     ' 隐藏网格线
Range("C:C,E:E").EntireColumn.Hidden = True   ' 隐藏列
' 取消行列隐藏
Cells.EntireColumn.Hidden = False 
Cells.EntireRow.Hidden = False

背景颜色索引

range("a1").Interior.ColorIndex = xlNone   ' 取消背景颜色
range("a1").Interior.ColorIndex =3    ' 红色
Range("h:l,o:o,r:s,aa:ab").Interior.Color = vbGreen  ' 也可以直接设置color

判断字符串是否包含xx字符:instr

index = instr("who you are","are")

数据类型的判断

类型判断:返回bool值;

  • typename(i) :判断数据格式
  • IsNumeric:判断变量的值是否为数值
  • isdate:判断变量的值是否为日期
  • isnull:判断变量的值是否包含任何有效数据
  • isempty:判断变量的值是否为空
  • IsArray : 判断出变量是否为一个数组。
  • IsError:判断变量是否返回的是一个错误值
  • IsObject:判断变量是否表示对象变量

数据类型转化

很多时候在判断时候,数据类型不一致会带来干扰,这时候可以使用类型转化函数。

  • CBool :Boolean
  • CDate :Date 任何有效的日期表达式。可以使用isdate判断date是否可以被转化为日期或时间。
  • CInt :Integer -32,768 至 32,767,小数部分四舍五入。
  • CLng :Long -2,147,483,648 至 2,147,483,647,小数部分四舍五入。
  • CSng :Single 负数为 -3.402823E38 至 -1.401298E-45;正数为 1.401298E-45 至 3.402823E38。
  • CStr :String 依据 expression 参数返回Cstr。
  • CVar :Variant 若为数值,则范围与 Double 相同;若不为数值,则范围与 String 相同。
  • Val :将数字转化为值value。
  • int: 转化为整数。比如int(“10”)

关于“空”

variant类型

A = Null '一个variant变量可以赋值为Null
IsNull(A) '判断一个varint变量是否为Null
一个尚未初始化的variant变量是empty
a = empty
A 等于 Empty, 因为尚未初始化的“不定型变量”都等于 Empty。
isempty(a)可判断是否为空对象
'但如果检测 A = “” 或 A = 0, 也都可以得到 True 值。

string类型

判断一个string变量为""(空字符串)
a = “”

integer类型

定义一个integer变量后,它自动初始化为0
a = 0

object类型

定义一个object变量后,它自动初始化为nothing。对象要使用is判断
a is nothing

对话框的使用

这里主要涉及到inputbox输入框、msgbox弹出框、以及选择文件、文件夹对话框

输入框:inputbox