目录
1. 代码基本结构
2. 基础操作:对单元格
3. 赋值
4. 格式设置
5. 逻辑
6. 说明
1. 代码基本结构
Sub name() '定义一个函数'
'代码主体'
End Sub
2. 基础操作:对单元格
'选择单元格'
Sub CellSelect()
'选中单个单元格'的三种等价表示
'Example 1'
Cells(3,1).Select '选中A3,前面表示行,后面表示列'
'Example 2'
Cells(3,"a").Select '和上面一样的'
'Example 3'
Dim tmpRange As Range 'dim定义一个range变量'
Set tmpRange = Cells(3,1)
tmpRange.Select
'选中一个范围'
Range(Cells(3,2), Cells(7,3)).Select '选中从B3到C7的所有单元格'
Union(Cells(3,2), Cells(7,3)).Select '只选择B3和C7两个单元格'
End Sub
3. 赋值
Sub WritingData()
Cells(1,1).Value = 11 '给A1赋值10'
x = Cells(1,1).Value '把A1的值储存到x里'
MsgBox x '弹出x的值'
MsgBox "Hello" '弹出Hello'
Debug.Print x '会在immediate window返回结果,类似python中的print,能够检测运行过程中是否正确'
'数字相加'
Cells(3,1).Value = Cells(1,1).Value + Cells(2,1).Values 'A3=A1+A2'
'如果想要相加的两个单元格不是在A1,我们想要写一个相对位置的代码呢?'
ActiveCell.Value = _ 'ActiveCell表示用户选中的单元格,_表示要换行了'
'Offset(-1,0)表示选中单元格的上一行,列不变的相对位置。比如用户选中了A100,那么这个就是指A99'
ActiveCell.Offset(-1,0).Value + ActiveCell.Offset(-2,0).Value
End Sub
4. 格式设置
Sub FormatCells1()
'基本属性'
'三种底色表达方式'
Cells(12, 1).Interior.Color = xlNone
Cells(11, 1).Interior.Color = RGB(255, 0, 0)
Cells(13, 1).Interior.ColorIndex = 9
' 对字体属性进行设置
Cells(11, "a").Font.Color = vbBlack '字体颜色'
Cells(11, "a").Font.Name = "garamond" '字体名称'
Cells(11, "a").Font.Size = 14 '字号'
Cells(11, "a").Font.Italic = True '斜体'
Cells(11, "a").Font.Bold = True '加粗'
End Sub
'上面的代码不太简洁,比如在字体属性设置那里,你会发现都是对同一个单元格进行操作。那么可以用下面的代码实现相同的操作'
Sub FormatCells2()
With Cells(11,1).Font
.Color = vbBlack '字体颜色'
.Name = "garamond" '字体名称'
.Size = 14 '字号'
.Italic = True '斜体'
.Bold = True '加粗'
End With
End Sub
5. 逻辑
'for循环,每个格子不同颜色'
Sub UsingLoop()
For j = 1 To 30 Step 1 'Step1表示步长为1,加不加都没关系'
Cells(j, "g").Value = j
Cells(j, "h").Interior.ColorIndex = j
Next j
End Sub
'for 循环+判断,判断两列的值哪一个大,大的标记为黄色'
Sub UsingForLoop()
For j = 1 To 15
If Cells(j, "d").Value < Cells(j, "e").Value Then
Cells(j, "d").Interior.Color = vbYellow
Cells(j, "e").Interior.Color = xlNone
Else
Cells(j, "d").Interior.Color = xlNone
Cells(j, "e").Interior.Color = vbYellow
End If
Next j
End Sub
'实现功能:还是判断两列数字大小,但是这个时候不是给定的列了,可能你也不知道用户的列在哪,所以要用ActiveCell功能'
Sub whileLoopExercise()
Do While ActiveCell.Value <> ""
If ActiveCell.Value > ActiveCell.Offset(0, 1).Value Then
ActiveCell.Interior.Color = vbYellow
Else
ActiveCell.Offset(0, 1).Interior.Color = vbYellow
End If
ActiveCell.Offset(1, 0).Select '这句话一定要有,不然死循环了
Loop
End Sub
6. 说明
以上内容是学校workshop的内容,我加以整理d。