一、如何进入编程界面
(进入路径: sheet名称 --> 鼠标右键菜单 --> 查看代码)
二、如何插入控件
三、如何访问excel元素
For i = 6 To 10 '第二行开始循环 循环j次
data = Trim(Worksheets(2).Range("F" & i).Value) '获取F列i行数据
Worksheets(1).Range("F" & i).Value = data
Next
四、如何遍历
1.Sub 遍历工作表()
For Each sh In Worksheets '数组
sh.Select
Call 设置A1格式
Next
End Sub
For Each sh In Worksheets
If sh.Index > 2 Then '限定工作表范围
sh.Select
Call 设置A1格式
End If
Next
For Each sh In Worksheets '数组
If sh.Name Like "*" & "表" & "*" Then '如果工作表名称包含“表”
sh.Select
Call 设置A1格式
End If
Next
End Sub
遍历range
Sub forEach()
Dim rg As Range
For Each rg In Sheet1.Range("b2:b10")
If rg = "女" Then rg.Interior.ColorIndex = 3
Next
End Sub
五常用代码
1把一个workBook的一块表格拷贝到另一个WorkBook中的一般化方法
Workbooks("工作簿1.xls").Sheet1.Range("A1:C50").Copy ThisWorkbook.Sheet2.Range("A1")
2找到粘贴位置:
b=sheet2.[BI].end(xlToLeft).row+1 获取最后一次编辑的各自的列号!
.Range("B65536").End(xlUp).Row + 2 最后一次编辑的格子的行号
3单元格发生改变触发事件
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
[a2] = [a2] + 1
End If
End Sub
4、使用系统函数
想在B列的2到1000行搜索为“结束”两个字的单元格有多少个,用countif怎么实现?
Set myRange = Range("B2:B1000")
A=Application.WorksheetFunction.COUNTIF(myRange,"结束")
Excel VBA - Range对象
Rows.Count 显示所有行的数目
Columns.Count 显示所有列的数目
Cells(Rows.Count, 1).End(xlUp).Row 显示第一列从下面数第一个有值的单元格的行号
Cells(1, Columns.Count).End(xlToLeft).Column 显示第一行从右面数第一个有值的单元格的列号
Cells(1, 1).BorderAround xlContinuous, xlThin 给A1单元格加入外边框
Range("A1:B4").Borders.LineStyle. = xlContinuous 给这个区域加入边框
Rows(1).AutoFit 为第一行分配合适的行距
Columns(1).AutoFit 为第一列分配合适的列宽
Rows(1).Delete 删除第一行
Columns(1).Delete 删除第一列
Cells(1, 1).MergeArea.Count 计算合并单元格的总单元格数
Cells(1, 1).MergeArea.Rows.Count 计算合并单元格的行数
Cells(1, 1).MergeArea.Columns.Count 计算合并单元格的列数
Cells(1, 1).MergeCells 返回Boolean,True和False Rnd()函数 返回小于1,大于等于0的一个随机数
Cells(1, 1).Interior.ColorIndex = Int(56 * Rnd() + 1) 给单元格内部赋个随机的颜色
Cells(1, 1).EntireColumn 包含此单元格的列
Cells(1, 1).EntireRow 包含此单元格的行
Cells.Interior.ColorIndex = xlColorIndexNone 所有单元格五色
Set rng = Application.Union(Target.EntireRow, Target.EntireColumn) 设置合并区域,注意Union方法是在Application下面的
Set rng = Sheet1.UsedRange.SpecialCells(xlCellTypeFormulas) 找出具有公式的单元格区域
Sheet1.Range("A:A").ClearContents 清除第一列的所有内容
Sheet1.Range("A:A").Clear 清楚第一列的所有东西,包括值、格式等
For Each rng In Sheet2.Range("A1:A40") 遍历区域内的每个单元格
Range("A:A").Replace "区", "市" 替换
Range("A:A").Replace What:="区", Replacement:="市" 替换
Sheet1.Range("A1:G7").Copy Sheet2.Range("A1") 复制区域,高宽变化
Sheet1.Range("A1:G7").Copy 复制区域
Sheet3.Range("A1").PasteSpecial xlPasteColumnWidth 黏贴相同宽度,相同高度要自己设置
Range("B1:B20").Validation.Add Type:=xlValidateList, Formula1:="A,B,C,D,E,F,G" 数据有效性
Range("A1").TextToColumns Space:=True 通过不定数量的空格来分列字符串
Cells(3, 4).Top 单元格顶部距离顶部的距离 Cells(3, 4).Left 单元格左边距离左边的距离 Cells(3) 表示第一行的第三列的单元格
ActiveWindow.VisibleRange.Cells(3) 表示当前页面第一行的第三列的单元格
Cells(1, 1).Previous.Select 向前移一个位置 Cells(1, 1).Next.Select 向后移动一个位置
公式计算
Range("C2").Formula = "= A2*B2" 简单相乘
Range("C2").Copy Range("C3:C" & r) 复制单元格公式
Cells(r + 1, 3).Formula = "=SUM(C2:C" & r & ")" 相加公式,也可以用Range
Range("C2").FormulaR1C1 = "=RC[-2]*RC[-1]" 按照相对位置来算
Range("C" & r + 1).FormulaR1C1 = "=SUM(R[-" & r - 1 & "]C:R[-1]C)" 同上,按相对位置来算,注意,向上是“-”