隐藏/取消隐藏行 – 过程太长
VBA新手,尝试创build一个代码,根据工作表1(F4)(值0-10)中单元格的值,在工作表2上隐藏/取消隐藏工作表2上的行(名为“费用代码”)。 我目前正在使用下面的代码,它通过单元格F23工作,但程序太长。 我需要复制这个单元格F4:F53,这些F单元格中的每一个具有不同的相应的10行的集合,以隐藏/取消隐藏表2。任何人都可以帮我编译这个? 这是我用于F4的示例:
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = ("$F$4") And Target.Value = "0" Then Sheets(“Charge Codes”).Rows("3:12").Hidden = True If Target.Address = ("$F$4") And Target.Value = "1" Then Sheets(“Charge Codes”).Rows("3").EntireRow.Hidden = False: Sheets(“Charge Codes”).Rows("4:12").Hidden = True If Target.Address = ("$F$4") And Target.Value = "2" Then Sheets(“Charge Codes”).Rows("3:4").EntireRow.Hidden = False: Sheets(“Charge Codes”).Rows("5:12").Hidden = True If Target.Address = ("$F$4") And Target.Value = "3" Then Sheets(“Charge Codes”).Rows("3:5").EntireRow.Hidden = False: Sheets(“Charge Codes”).Rows("6:12").Hidden = True If Target.Address = ("$F$4") And Target.Value = "4" Then Sheets(“Charge Codes”).Rows("3:6").EntireRow.Hidden = False: Sheets(“Charge Codes”).Rows("7:12").Hidden = True If Target.Address = ("$F$4") And Target.Value = "5" Then Sheets(“Charge Codes”).Rows("3:7").EntireRow.Hidden = False: Sheets(“Charge Codes”).Rows("8:12").Hidden = True If Target.Address = ("$F$4") And Target.Value = "6" Then Sheets(“Charge Codes”).Rows("3:8").EntireRow.Hidden = False: Sheets(“Charge Codes”).Rows("9:12").Hidden = True If Target.Address = ("$F$4") And Target.Value = "7" Then Sheets(“Charge Codes”).Rows("3:9").EntireRow.Hidden = False: Sheets(“Charge Codes”).Rows("10:12").Hidden = True If Target.Address = ("$F$4") And Target.Value = "8" Then Sheets(“Charge Codes”).Rows("3:10").EntireRow.Hidden = False: Sheets(“Charge Codes”).Rows("11:12").Hidden = True If Target.Address = ("$F$4") And Target.Value = "9" Then Sheets(“Charge Codes”).Rows("3:11").EntireRow.Hidden = False: Sheets(“Charge Codes”).Rows("12:12").Hidden = True If Target.Address = ("$F$4") And Target.Value = "10" Then Sheets(“Charge Codes”).Rows("3:12").EntireRow.Hidden = False End Sub
如果我的基本math正确,这应该照顾你隐藏的行组。
Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$F$4" Then Worksheets("Charge Codes").Cells(3, 1).Resize(10, 1).EntireRow.Hidden = False Select Case Target.Value Case 0, 10 Worksheets("Charge Codes").Cells(3, 1).Resize(10, 1).EntireRow.Hidden = True Case 1, 2, 3, 4, 5, 6, 7, 8, 9 Worksheets("Charge Codes").Cells(3, 1).Resize(Target.Value, 1).EntireRow.Hidden = True Case Else 'do nothing End Select End If End Sub
这使用嵌套的Ifs:
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = ("$F$4") Then If Target.Value <> 0 Then Sheets("Charge Codes").Rows("3:12").Hidden = True ElseIf Target.Value = 10 Then Sheets("Charge Codes").Rows("3:12").Hidden = False Else Sheets("Charge Codes").Rows(3 + Target.Value & ":12").Hidden = True Sheets("Charge Codes").Rows("3:" & 2 + Target.Value).Hidden = False End If End Sub
只需使用逻辑来查找要隐藏的行号
If Target.Address = ("$F$4") Then Sheets("Charge Codes").Rows(3 & ":" & CDbl(Target.Value) + (CDbl(Target.Value) - 3)).EntireRow.Hidden = False: _ Sheets("Charge Codes").Rows(12 - CDbl(Target.Value) & ":" & 12).EntireRow.Hidden = True End If
- Vlookup函数将找不到正确的值
- ADO与Delphi XE中的XLSX文件
- 如何通过C#在Excel中将公式值parsing为文本
- 使用office.js(Office加载项)访问Excel中BindingDataChanged事件和单元格位置中的旧单元格值
- 将Unicode .csv(逗号分隔)文件导出到Excel 2003或Excel 2007会导致所有列都以Excel中的第一列结尾
- Excel数据视图Eclipse Apache POI
- 使用Powershell来遍历Excel文件并检查Spreadsheet名称是否存在
- 如何selectmacros应该在哪里执行(在一个单元格中)
- 自动筛选Excel VBA后删除隐藏/不可见的行