如何解决如何在VBA for Excel中保存所有隐藏列的范围
在VBA for Excel中,我需要保存工作表中所有隐藏的列的范围,不幸的是,我没有设法找出解决方法。 为了提供更多的上下文,我的意图是将工作表的隐藏列的范围保存在一个临时变量中,然后取消隐藏列,保存工作簿并重新隐藏已保存的列,以便始终保存工作簿并显示所有列。 我被困在“将工作表的隐藏列的范围保存在临时变量中” 步骤。 谢谢您的帮助。
解决方法
这实际上是一个非常简单的过程。将来,您确实需要与我们分享您为解决问题所做的工作。
我认为您是vba的新手,请查看下面代码中的注释。
Sub runme()
Dim HiddenColumns(),size As Integer
'Using a seperate counter,loop through your range of data.
'If you find a hidden column redim our hidden columns array and add that row's number to the array
'then increase our seperate counter
size = 0
For i = 1 To 12 'Change this to your range
If Columns(i).Hidden = True Then
ReDim Preserve HiddenColumns(size) 'Redim and preserve the array to our "size" variable (which will always be one more than the current array size
HiddenColumns(size) = i
size = size + 1
End If
Next i
'Now we want to loop through our array and flip all the columns that were hidden to shown
'You can add this to the original array building loop to be more efficent I'm just breaking it up here
'for demonstration purposes
For i = 0 To size - 1
Worksheets("Sheet1").Columns(HiddenColumns(i)).Hidden = False
Next i
'Call your workbook saving here
ThisWorkbook.Save
'Now loop through our array of columns once more to rehide them
For i = 0 To size - 1
Worksheets("sheet1").Columns(HiddenColumns(i)).Hidden = True
Next i
End Sub
,
也许有一种更有效的方法来实现所需的目标,但是一种方法是遍历范围的列,如果该列是隐藏的,则可以使用Union
将其添加到范围变量中。
例如,假设您要将所有隐藏列从变量mInitialRange
存储到变量mHiddenColumns
中。这会给你:
Dim mInitialRange As Range,mHiddenColumns As Range
For Each mcolumn In mInitialRange.Columns
If mcolumn.Hidden Then
If mHiddenColumns Is Nothing Then
Set mHiddenColumns = mcolumn
Else
Set mHiddenColumns = Union(mHiddenColumns,mcolumn)
End If
End If
Next mcolumn
编辑:遵循@BigBen建议
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。