BBS

  • 注册
  • 登录
  • 搜索
  • 标签
  • 帮助
BBS » 电脑、手机、平板知识专栏 » 用VBA自动隐藏“有公式但显示为空白行”怎么弄? » 发表回复

预览帖子

游客


发表回复

用户名 游客 [会员登录]
  (可选)
  • Html 代码 可用
  • 表情 可用
  • Discuz!代码 可用
  • [img] 代码 可用
B I U | 字体 大小
| Align Left Align Center Align Right | Url Email Image | Quote Code
Rremove Format Unlink Undo Redo | Ordered List Unordered List Outdent Indent Float Left Float Right | Table Free Hide | flyflashmp3mtvmusicmusic2
flvmtv2music3
简单功能
  • 仿宋_GB2312
  • 黑体
  • 楷体_GB2312
  • 宋体
  • 新宋体
  • 微软雅黑
  • Trebuchet MS
  • Tahoma
  • Arial
  • Impact
  • Verdana
  • Times New Roman
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
收缩编辑框扩展编辑框
上传附件 描述
文件尺寸: 小于 25000 kb
  [完成后可按 Ctrl+Enter 发布]    恢复数据

主题回顾

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 编辑 ]

当前时区 GMT+8, 现在时间是 2026-4-4 01:09

清除 Cookies - 联系我们 - BBS - WAP - TOP - 界面风格

  • 默认风格
  • 喝彩奥运
  • 深邃永恒
  • 粉妆精灵
  • 诗意田园
  • 春意盎然
  • 黑色

Discuz!

Powered by Discuz! 6.0.0 © 2001-2007 Comsenz Inc.

Processed in 0.052104 second(s), 5 queries, Gzip enabled.