我有一个带有两个工作表的Excel工作簿:summary和ClickHide。
Summary Sheet包含多个复选框窗体。选中复选框时,它们将在TRUE或FALSE值的ClickHide Sheet中返回一个ROW A值。ClickHideSheet:在A2:A20中的这些值旁边,我将"0“或"1”值归因于TRUE or FALSE结果。这些结果水平地在范围内B2:BZ45。在ClickHide Row 1上,我有公式在每个列的顶部得到一个结果。Summary B1:BZ1中,我将链接复制到ClickHide A1:BZ1中的单元格。我的问题:
我打算让
Summary中的列在自己行中的值为而不是 0时自动隐藏。(如果B1不是0,则隐藏列B,否则取消隐藏)。用户将与复选框交互,因此每次修改复选框时都需要触发宏。
我已经在那里找到了代码片段,但它们似乎都不起作用。我在VBA方面真的很差,所以它可能是我错过的一个简单的编辑。
这两种我都试过了,但都没有成功。看看以下参考。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
For i = 2 To 80
Cells(1, i).EntireColumn.Hidden = Cells(2, i) = 0
Next
End Sub下一个我不知道是否是VBA代码。
oSheets = ThisComponent.getSheets()
oSheet1 = oSheets.getByName("Sheet1")
oColumns = oSheet1.getColumns()
for i = 0 to 25
oCol = oColumns.getByIndex(i)
oCell = oSheet1.getCellByPosition(i,0) 'First row has index 0
If oCell.Value = 0 Then
oCol.isVisible = False
Else
oCol.isVisible = True
End If
next i我不知道如何在这里嵌入电子表格,所以这里有两个工作表的图片,简化为显示示例。
谢谢你能提供的任何帮助。
发布于 2016-07-12 06:49:25
将这些代码放在ThisWorkbook模块中:
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Dim rng As Range
Application.ScreenUpdating = False
For i = 2 To 9
Set rng = Cells(1, i)
If rng.EntireColumn.Hidden = 0 Then
If rng.Value = 1 Then rng.EntireColumn.Hidden = 1
Else
If rng.Value = 0 Then rng.EntireColumn.Hidden = 0
End If
Next i
End Sub它将在任何工作表上从列B到I (列2至9)工作。如果需要计算更改的列,请更改此编号。

如果希望它只在特定的工作表上工作,请将第一行更改为Private Sub Worksheet_Calculate(),并将其放在特定工作表的模块中。
编辑:修改后的代码,在很少更改的情况下,它可能运行得更快。
发布于 2016-07-12 05:13:52
您发布的代码不属于Excel,而是openoffice的代码。
下面的代码将隐藏值=0的单元格(第一行)的列,您可以在宏的末尾包含此代码。
Public sub Hidecol()
'Count no. of used columns in 1st row
l = Cells(1, Columns.Count).End(xlToLeft).Column
'Loop through 1st row 1stcolumn till 1st row lastcolumn
For i = 1 To l
'if cell vaue is 0 then hide cell column
If Cells(1, i).Value = 0 Then
Cells(1, i).EntireColumn.Hidden = True
End If
Next i
End Sub发布于 2016-07-12 13:21:07
我试过织女星的答案,效果很好。
我还应用了这个脚本,它似乎运行得稍微快一些,但总体上还是相当慢的。
Private Sub Worksheet_Calculate()
For Each cell In Range("B1:BZ1") '**edit if not correct range
Select Case cell.Value <> 0
Case False
cell.EntireColumn.Hidden = False
Case True
cell.EntireColumn.Hidden = True
End Select
Next cell
End Subhttps://stackoverflow.com/questions/38320319
复制相似问题