excel 显示/隐藏单元格的VBA编程代码是什么?(设置一个单元格我会,多个不会!)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$1" Then
Columns("B:F").Hidden = Not (Columns("B:F").Hidden)
If Range("A1") = "显示" Then Range("A1") = "隐藏" Else Range("A1") = "显示"
Range("A2").Select
End If
End Sub
这样的结果是点击A1就可以实现(显示/隐藏列B~F单元格)
问:在同sheet里,我还想点A5能隐藏G~J,点A7隐藏/显示K~N,代码怎么写?求大神指点!如果能再给推荐个这方面自学的书籍或网站或老师,那就更好了!无限感激!

设置隐藏/显示是修改range的Hidden属性,这个你的代码里面就有例子,一般有下面的三种使用方法:

一、取消隐藏
Columns("B:F").Hidden = False

二、设置隐藏
Columns("B:F").Hidden = True

三、反转(如果原本隐藏就显示、原本显示就隐藏)
Columns("B:F").Hidden = Not (Columns("B:F").Hidden)

行(例如Rows(1))也可以隐藏,但是隐藏必须是整行或者整列。追问

问:在同sheet里,我还想点A5能隐藏G~J,点A7隐藏/显示K~N,那么全部代码怎么写?请全部写出,我是纯小白,您写的我看不太懂,我那个代码还是从网上直接抄下来改的…

追答

现有代码是正确的吧,把你现在的那块代码复制几次不就可以了吗:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$1" Then
    Columns("B:F").Hidden = Not (Columns("B:F").Hidden)
    If Range("A1") = "显示" Then Range("A1") = "隐藏" Else Range("A1") = "显示"
    Range("A2").Select    
End If

If Target.Address = "$A$5" Then
    Columns("G:J").Hidden = Not (Columns("G:J").Hidden)
    If Range("A5") = "显示" Then Range("A5") = "隐藏" Else Range("A5") = "显示"
    Range("A6").Select    
End If
End Sub

我复制了一次,解决了A5控制G:J的功能,你类似复制一下试试看,不难的。

追问

您的回答帮我解决了问题,但有个回答比您快,我才纳了他的。我会再开一个问题,然后把悬赏的20分给您。

我已开了新问题,请您去随便回答一下,我把积分给您

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-03-17
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        Columns("B:F").Hidden = Not (Columns("B:F").Hidden)
        If Range("A1") = "显示" Then Range("A1") = "隐藏" Else Range("A1") = "显示"
        Range("A2").Select
    End If
    If Target.Address = "$A$5" Then
        Columns("G:J").Hidden = Not (Columns("G:J").Hidden)
        If Range("A5") = "显示" Then Range("A5") = "隐藏" Else Range("A5") = "显示"
        Range("A2").Select
    End If
    If Target.Address = "$A$7" Then
        Columns("K:N").Hidden = Not (Columns("K:N").Hidden)
        If Range("A7") = "显示" Then Range("A7") = "隐藏" Else Range("A7") = "显示"
        Range("A2").Select
    End If
End Sub

在原有的基础上,加上A5和A7的条件就可以了

本回答被提问者采纳
相似回答