主题回顾
zhendeaini 发表于 2016-9-7 09:02
不要再虐我了,我本菜鸟一枚。[25]
maximus 发表于 2016-9-7 08:00
引用:
原帖由 zhendeaini 于 2016-9-6 17:34 发表 
呵呵,你太追求完美了,这样会很累的哦,好吧,再次修改了下。
[3] 学习上精益求精。
[39] 想虐下版主你结果没成功。
zhendeaini 发表于 2016-9-6 17:34
呵呵,你太追求完美了,这样会很累的哦,好吧,再次修改了下。
maximus 发表于 2016-9-6 17:17
引用:
原帖由 zhendeaini 于 2016-9-6 11:00 发表 
客气,互相交流[82]
sheet1能很完美隐藏,sheet3隐藏后单元格会有些线,这些能否增加一些定位的语句改善这个问题。
我自己试了一下午,都没有战胜这个小问题[45]
zhendeaini 发表于 2016-9-6 11:00
客气,互相交流[82]
maximus 发表于 2016-9-6 10:04
引用:
原帖由 zhendeaini 于 2016-9-6 08:42 发表 
简单修改下,请参考:
试用一下。太好用了!
[
本帖最后由 maximus 于 2016-9-6 10:44 编辑 ]
maximus 发表于 2016-9-6 09:47
引用:
原帖由 zhendeaini 于 2016-9-6 08:42 发表 
简单修改下,请参考:
[12] 化繁为简。一点都不简单[39]
厉害。高手就高手。
zhendeaini 发表于 2016-9-6 08:42
简单修改下,请参考:
maximus 发表于 2016-9-5 16:26
[3] 习惯还没有养好。下次不会了。
看附件
我增加了一个工作表。名字叫"2"
改数字时候。工作表"1”隐藏了。工作表"2"没隐藏。
zhendeaini 发表于 2016-9-5 16:18
要不你还是上传附件吧,这样描述,不知要达到怎样的效果。
maximus 发表于 2016-9-5 16:15
引用:
原帖由 zhendeaini 于 2016-9-5 15:57 发表 
可以用如下代码:
If sheet1.Target.Row = 1 And sheet1.Target.Column = 1
如果你单纯是要Sheet2也随Sheet1表的A1的值变化而变化,可以直接在原来的代码加上(比如): Sheet2.[A1]=Sheet1.[A1]←根据实际需要修改 ...
试了一下。放sheet2时候vba显示是红色的。测试没有生效。
我加了个Then 后变黑色。但是也没有用。
我的sheet1工作表是有改名字的,这个有没有影响?
我看代码的理解是sheet是代表工作表排序的,而不是工作表的名字吧?!
[
本帖最后由 maximus 于 2016-9-5 16:19 编辑 ]
zhendeaini 发表于 2016-9-5 15:57
可以用如下代码:
If sheet1.Target.Row = 1 And sheet1.Target.Column = 1
如果你单纯是要Sheet2也随Sheet1表的A1的值变化而变化,可以直接在原来的代码加上(比如): Sheet2.[A1]=Sheet1.[A1]←根据实际需要修改。
maximus 发表于 2016-9-5 15:39
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 And Target.Column = 1 Then ‘当A1数据变化时
这一条代码 放到sheet2时能否改成‘当SHEET1!A1数据变化时
[ 本帖最后由 maximus 于 2016-9-5 15:55 编辑 ]
maximus 发表于 2016-9-5 15:05
这代码只对表的sheet1有效
有两个新问题:
1、如何单独扩展到sheet2
2、扩展到整个工作簿
[ 本帖最后由 maximus 于 2016-9-5 15:27 编辑 ]
maximus 发表于 2016-9-5 11:09
引用:
原帖由 zhendeaini 于 2016-9-5 09:46 发表 
稍微改动下:
A7=IF(A1=1,Sheet1!A1,FALSE),采用逻辑关系。不然的话都为文本,系统无法识别。
这个完美 [12]
zhendeaini 发表于 2016-9-5 09:46
稍微改动下:
A7=IF(A1=1,Sheet1!A1,FALSE),采用逻辑关系。不然的话都为文本,系统无法识别。
maximus 发表于 2016-9-2 18:04
找到真正的原因了。
是因为引用的结果是文字。就会给隐藏。
A1输入数字1或2时,黄色格含有文字的数据行会给隐藏掉。这个怎么修改![30]
[ 本帖最后由 maximus 于 2016-9-5 08:49 编辑 ]
maximus 发表于 2016-9-2 17:50
引用:
原帖由 zhendeaini 于 2016-9-2 17:05 发表 
如果可以你上传附件说明。不需要真实数据。
我再试一下。不是因为跨表引用。
不知道我的表有什么问题,我再研究一下。周一我整理一下发附件上来。
zhendeaini 发表于 2016-9-2 17:05
如果可以你上传附件说明。不需要真实数据。
maximus 发表于 2016-9-2 17:03
引用:
原帖由 zhendeaini 于 2016-9-2 16:40 发表 
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 And Target.Column = 1 Then ‘当A1数据变化时
Application.ScreenUpdating = False 'Excel停止刷新,防止屏幕闪烁,目的是加快代码执 ...
我找出原因了。因为我的表用了跨表引用,所以给判断为逻辑错误了。
这个怎么修改。
找到真正的原因了。和跨表引用没关系,而是因为单元格返回的数据有文字。就会给隐藏掉。
[
本帖最后由 maximus 于 2016-9-5 08:51 编辑 ]
zhendeaini 发表于 2016-9-2 16:40
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 And Target.Column = 1 Then ‘当A1数据变化时
Application.ScreenUpdating = False 'Excel停止刷新,防止屏幕闪烁,目的是加快代码执行速度
Application.DisplayAlerts = False 'Excel不显示警告和消息提示框
Rows("2:69").Select '选择第2-69行,提示:这个你可以根据实际修改
Selection.EntireRow.Hidden = False '恢复第2-69行所隐藏的行,提示:这个你可以根据实际修改
Range("A1:D69").Select '选取A1:D69区域,提示:这个你可以根据实际修改
Selection.SpecialCells(xlCellTypeFormulas, 22).Select ‘将公式中逻辑和错误类型选择
Selection.EntireRow.Hidden = True '隐藏所中上一行代码的行
Sheet1.[A1].Select ’以上操作后定位A1单元格
Application.ScreenUpdating = True 'Excel启用刷新,代码执行后恢复
Application.DisplayAlerts = True 'Excel显示警告和消息提示框
End If '结束
End Sub
maximus 发表于 2016-9-2 15:58
接上楼
Selection.SpecialCells(xlCellTypeFormulas, 22).Select
关键是这句吗?这句是什么意思
maximus 发表于 2016-9-2 15:07
引用:
原帖由 zhendeaini 于 2016-9-2 14:46 发表 
代入以下代码:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 And Target.Column = 1 Then
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Rows("2: ...
太好了。这正是我想要的功能![12]
能讲解下代码的意思吗![68]
因为我把代码弄到其他表格里面去。只改动代码指定的区域后,会把公式有数据的行给隐藏了。
[
本帖最后由 maximus 于 2016-9-2 15:49 编辑 ]
zhendeaini 发表于 2016-9-2 14:46
代入以下代码:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 And Target.Column = 1 Then
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Rows("2:69").Select
Selection.EntireRow.Hidden = False
Range("A1:D69").Select
Selection.SpecialCells(xlCellTypeFormulas, 22).Select
Selection.EntireRow.Hidden = True
Sheet1.[A1].Select
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End If
End Sub
应该是这样的效果。
maximus 发表于 2016-9-2 14:07
引用:
原帖由 zhendeaini 于 2016-9-2 13:02 发表 
一点思路:
Sub 隐藏()
Range("A1:D20").Select '这个区域可根据实际确定
Selection.SpecialCells(xlCellTypeFormulas, 23).Select
Selection.EntireRow.Hidden = True
End Sub
是否符合要 ...
试了下。当条件发生变化。带公式的行有数据而不是空的时候。还是给隐藏了。
maximus 发表于 2016-9-2 14:04
[24] 我去试下
zhendeaini 发表于 2016-9-2 13:02
一点思路:
Sub 隐藏()
Range("A1:D20").Select '这个区域可根据实际确定
Selection.SpecialCells(xlCellTypeFormulas, 23).Select
Selection.EntireRow.Hidden = True
End Sub
是否符合要求?
匿名 发表于 2016-9-2 12:46
进来学习下[39]
maximus 发表于 2016-9-2 11:45
我设置了自动隐藏一般的空白行。但有些行是含有公式的就隐藏不了。
而且我的隐藏是要按一下按钮的。
1:能隐藏带公式的空白行(底色为绿色只是为了告诉看的人那些行有公式,实际使用时候底色是白色的)
2:随着数据的变化自动隐藏和显示。(去掉按钮)
注:数据的变化是根据最上面标红色的数字:可录入1.2.3.4.
[ 本帖最后由 maximus 于 2016-9-2 11:50 编辑 ]