一点VBA

1、ALT+F11启动Excel宏编程

2、宏设置在 文件-->选项-->信任中心-->宏设置,修改为启用。

3、Excel中VBA编程使用 VB语法,‘表示注释

 

编写了Excel部分格式操作

Private Sub Worksheet_Activate()
隐藏注释行
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
隐藏注释行  '先隐藏所有代码
r = Target.Row
c = Target.Column

Range(CStr(r) + ":" + CStr(r)).EntireRow.Hidden = False '当前行显示
If r Mod 2 = 0 Then
Range(CStr(r + 1) + ":" + CStr(r + 1)).EntireRow.Hidden = False '当前行为偶数时,下一行数据也显示
    If c = 1 And (Cells(r - 1, 1).MergeCells = True Or r = 2) Then  '如果选中第一列时,并且上一列为合并单元格时则把奇数列合并
        Range(Cells(r + 1, 2), Cells(r + 1, 5)).Merge '先合并下一行,备注列
        Cells(r + 1, 2).HorizontalAlignment = xlLeft  '合并后的单元格居左显示
        Range(Cells(r, 1), Cells(r + 1, 1)).Merge    '合并第当前行和下一行第一列单元格为一列
        Range(Cells(r, 6), Cells(r + 1, 6)).Merge   '合并最后当前行和下一行最后一列单元格为一列
    End If
End If


If c = 2 And Selection.MergeCells = False And Cells(r, 1).MergeCells = True Then  '当前列为第二列且非合并单元格,且第一列为合并单元格时,添加数据约束
        ''添加数据有效性
        With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="新增,修改"
            .InCellDropdown = True
        End With
 Else
    With Selection.Validation.Delete
    End With
End If

End Sub

 

Sub 隐藏注释行()
For i = 2 To ActiveSheet.UsedRange.Rows.Count
If i Mod 2 = 1 And Cells(i, 2) = "" Then '条件判断
Range(CStr(i) + ":" + CStr(i)).EntireRow.Hidden = True '内容空时隐藏
Else
Range(CStr(i) + ":" + CStr(i)).EntireRow.Hidden = False '内容非空时显示
End If
Next
End Sub

 

posted @ 2018-01-16 18:18  mopheify  阅读(276)  评论(0)    收藏  举报