使用VBA根据用户选择隐藏列?

时间:2017-09-25 11:56:19

标签: excel vba excel-vba excel-2007

我使用Excel 2007在2017年1月1日到2017年12月31日之前通过“NS9”制作带有单元格“S9”的考勤表。我希望如果表单的用户输入日期(1 /在03/2017作为一个例子)在指定的单元格(比如说“B3”)中,除了显示输入日期的一列之外,其他日期的列将隐藏,在这种情况下仅显示0/03的列U.这样可以节省在到达相关日期之前滚动浏览多个列的时间。

我尝试了一些在线发现的VBA代码,但仍然遇到“运行时错误'1004':对象'_ workheet'的方法'范围'失败”消息。以下是我正在使用的代码。

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$3" Then
Dim the_selection As String
Dim month_in_review As String

the_selection = Sheet2.Range("B3")

    Dim Rep As Integer
    For Rep = 19 To 383
        the_column = GetColumnLetter_ByInteger(Rep)
        month_in_review = Sheet2.Range(the_column & "9")
            If the_selection = month_in_review Then
            Sheet2.Range(the_column & ":" & the_column).EntireColumn.Hidden = False
            Else
            Sheet2.Range(the_column & ":" & the_column).EntireColumn.Hidden = True
            End If
    Next Rep

End If
End Sub

下面显示的模块......

Public Function GetColumnLetter_ByInteger(waht_number As Integer) As String
GetColumnLetter_ByInteger = ""

MyColumn_integer = what_number

    If MyColumn_integer <= 26 Then
        column_letter = Chr(64 + MyColumn_integer)
    End If

If MyColumn_integer > 26 Then
    column_letter = Chr(Int((MyColumn_integer - 1) / 26) + 64) & Chr(((MyColumn_integer - 1) Mod 26) + 65)

End If

GetColumnLetter_ByInteger = column_letter

End Function

请帮忙......非常感谢!

0 个答案:

没有答案
相关问题