目录

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。