【发布时间】:2017-12-21 09:27:09
【问题描述】:
我有一份报告要求用户单击按钮以显示他们需要添加评论的位置。我让它工作,但想放入一个 If 语句,以防他们已经扩展了行。
我有两个宏,第一个与他们按下的按钮相关,并向主宏发送按钮的名称和行号,该行号是展开或折叠部分的一部分
Sub ROccupancy()
'
Dim RecName As String
RecName = "ROccupancy"
Dim RowNum As Integer
RowNum = 27
Call ToogleRec(RecName, RowNum)
End Sub
下一个宏是我遇到问题的地方
Sub ToogleRec(RecName, RowNum)
'
Dim Toogle As String
Dim MyObj As Object
Set MyObj = ActiveSheet.Shapes.Range(Array(RecName))
Toogle = Left(MyObj.TextFrame2.TextRange.Characters.Text, 4)
TextName = Mid(MyObj.TextFrame2.TextRange.Characters.Text, 5, 100)
If Toogle = "Show" Then
MyObj.ShapeStyle = msoShapeStylePreset9
MyObj.TextFrame2.TextRange.Characters.Text = _
"Hide" & TextName
MsgBox Rows(RowNum).ShowDetail
If Rows(RowNum).ShowDetail = False Then
Rows(RowNum).ShowDetail = True
End If
Else
MyObj.ShapeStyle = msoShapeStylePreset11
MyObj.TextFrame2.TextRange.Characters.Text = _
"Show" & TextName
MsgBox Rows(RowNum).ShowDetail
If Rows(RowNum).ShowDetail = True Then
Rows(RowNum).ShowDetail = False
End If
End If
Range("C" & RowNum).Select
End Sub
问题在于 Rows(RowNum).ShowDetail 始终为 TRUE,无论它是展开还是折叠。我可以删除 If 部分并使用“Rows(RowNum).ShowDetail = False”或“Rows(RowNum).ShowDetail = TRUE”将其设置为 TRUE 或 FALSE。但是,如果用户手动展开或折叠该行,则会导致错误(这让他们大吃一惊)
这个问题和答案似乎 promising 但 Rows(RowNum).ShowDetail 似乎总是正确的
我把 MsgBox 放在那里进行错误检查。我会在最终版本中删除它。
【问题讨论】:
-
mrexcel.com/forum/excel-questions/86445-showdetail.html您尝试切换部分数据透视表或小计的行?