Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2328|回复: 7

[已解决]表sheet3、sheet4已隐藏,如何使超链接文字自动变灰色?

[复制链接]
发表于 2017-6-26 10:04 | 显示全部楼层 |阅读模式
本帖最后由 jinzikun 于 2017-6-27 16:17 编辑

各位大师和高手们:为了提醒使用者,这样的VBA代码该怎么写?表sheet3、sheet4已隐藏,如何使指向sheet3、sheet4的超链接文字自动变灰色?
最佳答案
2017-6-27 12:50
忘记指定工作表了。
  1. Private Sub Workbook_Open()
  2. Dim i&, arr
  3. arr = Sheets(1).Range("b11:b" & Sheets(1).[b65536].End(3).Row)
  4. For i = 1 To UBound(arr)
  5.   If Sheets(arr(i, 1)).Visible = False Then Sheets(1).Cells(i + 10, 2).Font.Color = RGB(120, 120, 120) Else Sheets(1).Cells(i + 10, 2).Font.Color = RGB(0, 0, 255)
  6. Next i
  7. End Sub
复制代码
无标题.png

Book1.rar

2.57 KB, 下载次数: 10

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2017-6-27 12:13 | 显示全部楼层
估计没人会了。一般人会觉得这个问题毫无意义,其实在我的程序中很有用。因为在目录工作表里,同一个超链接,有权限的人可以点开,没权限的人是点不开的,因为链接目标已经对他隐藏了。为了提醒使用者,能点开的链接正常显示蓝色,点不开的最好显示灰色,故出此问。
回复

使用道具 举报

发表于 2017-6-27 12:47 | 显示全部楼层
实际上是很容易实现的,关键你需要在什么时候判断,是打开工作簿时,还是每次隐藏工作表就要同步更新。
我记得隐藏工作表是不能响应事件的,实现较困难,打开时判断没问题。
我先给出打开工作簿时的判断处理。
  1. Private Sub Workbook_Open()
  2. Dim i&
  3. For i = 11 To [b65536].End(3).Row
  4.   If Sheets(Cells(i, 2).Value).Visible = False Then Cells(i, 2).Font.Color = RGB(120, 120, 120) Else Cells(i, 2).Font.Color = RGB(0, 0, 255)
  5. Next i
  6. End Sub
复制代码
回复

使用道具 举报

发表于 2017-6-27 12:50 | 显示全部楼层    本楼为最佳答案   
忘记指定工作表了。
  1. Private Sub Workbook_Open()
  2. Dim i&, arr
  3. arr = Sheets(1).Range("b11:b" & Sheets(1).[b65536].End(3).Row)
  4. For i = 1 To UBound(arr)
  5.   If Sheets(arr(i, 1)).Visible = False Then Sheets(1).Cells(i + 10, 2).Font.Color = RGB(120, 120, 120) Else Sheets(1).Cells(i + 10, 2).Font.Color = RGB(0, 0, 255)
  6. Next i
  7. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2017-6-27 15:41 | 显示全部楼层
大灰狼1976 发表于 2017-6-27 12:50
忘记指定工作表了。

大师,您的代码在工作表没保护的情况下一切OK,一旦保护就出现了状况。如图:
无标题.png
回复

使用道具 举报

 楼主| 发表于 2017-6-27 15:45 | 显示全部楼层
大灰狼1976 发表于 2017-6-27 12:50
忘记指定工作表了。

我这样做也同样出现类似问题,如图:
jzk.png
回复

使用道具 举报

发表于 2017-6-27 15:52 | 显示全部楼层
你可以在代码中加入取消工作表保护和再保护工作表的功能就行了。
回复

使用道具 举报

 楼主| 发表于 2017-6-27 16:16 | 显示全部楼层
大灰狼1976 发表于 2017-6-27 15:52
你可以在代码中加入取消工作表保护和再保护工作表的功能就行了。

我的程序是共享工作簿,是不能这样做的。谢谢大师,我有办法了,这样做您的代码还是可以用的:
无标题.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-21 00:38 , Processed in 0.344009 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表