Excel隐藏代码和隐藏单元格的问题

pkln4tw6  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(119)

在我的Excel工作表的上半部分,我可以通过一个菜单(单元格D9)输入两个关键字。下面我可以输入一个日期(单元格D19)。
在Excel的下半部分是按两个关键字拆分的12个月的多个列表。关键字1和2有多个相同的列表。
我现在想发生的是,当我选择一个关键字,其他关键字的列表是隐藏的。此外,根据我输入的日期也在列表中的月份是之前输入的日期隐藏。
ChatGPT给了我几乎可以做到这一点的代码。唯一的问题是,当我输入某个日期,然后输入一个早于原始日期的日期时,工作表不会刷新。
有人知道怎么修吗?
这是我的代码

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim iCell As Range
    Dim ws As Worksheet
    Dim dateToCompare As Date
    Dim cell As Range

    Set ws = ThisWorkbook.Sheets("Eingabe") ' Change "Eingabe" to your sheet name
    Set iCell = Intersect(Range("D9"), Target)

    ' Handle "Strom" and "Gas" functionality
    If Not iCell Is Nothing Then
        If iCell.Value = "Strom" Then
            ' Adjust these ranges to match your data
            ws.Rows("23:61").Hidden = False
            ws.Rows("62:100").Hidden = True
        ElseIf iCell.Value = "Gas" Then
            ' Adjust these ranges to match your data
            ws.Rows("23:61").Hidden = True
            ws.Rows("62:100").Hidden = False
        'Else ' do nothing
        End If
    End If

    ' Check for dates in column C and hide rows if the date is earlier than D19
    dateToCompare = ws.Range("D19").Value
    For Each cell In ws.Range("C1:C" & ws.Cells(ws.Rows.Count, "C").End(xlUp).Row)
        If Not cell.EntireRow.Hidden Then ' Check if the row is not already hidden
            If IsDate(cell.Value) And cell.Value < dateToCompare Then
                cell.EntireRow.Hidden = True
            Else
                cell.EntireRow.Hidden = False
            End If
        End If
    Next cell
End Sub

字符串

aemubtdh

aemubtdh1#

我想你是在做选择,然后每次都运行宏,对吗?你不会把它设置成自动运行吧?
如果是这种情况..最简单的解决方案可能是制作第二个宏来将页面“重置”回默认值。(虽然现在我正在写这篇文章,但我认为将其添加到当前页面的开头会更容易-但两个单独的宏的逻辑可能会使逻辑更容易理解-至少对我来说!:-)
在“非技术术语”(我知道你是新来的),我建议的是..
在您的特定示例中,我认为(可能缺少一些东西),但唯一需要“重置”的是列是否隐藏。
如果你简单地加上:
第一个月
就在你当前的注解/行之前:
' Handle "Strom" and "Gas" functionality
你应该都准备好了!

相关问题