У меня есть список проверки в ячейке B2, который получает список из строки 5 (G5: BF5).
Я хочу, чтобы пользователь мог выбрать значение из списка проверки, в результате которого будут отображены все столбцы. от G до BF, скрытого за исключением заголовка столбца, который соответствует значению в ячейке B2.
Я использовал приведенный ниже код, но продолжаю получать ошибку Application-Defined или Object-Defined.
Я использую следующий VBA:
Рабочий лист >> Изменить
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$2" Then
Dim the_selection As String
Dim week_in_review As String
the_selection = Worksheets("SortHeatMap").Range("B2")
Dim rep As Integer
For rep = 8 To 25
the_column = GetColumnLetter_ByInteger(rep)
week_in_review = Worksheets("SortHeatMap").Range(column_letter & "5")
If the_selection = week_in_review Then
Worksheets("SortHeatMap").Range(the_column & ":" & the_column).EntireColumn.Hidden = False
Else
Worksheets("SortHeatMap").Range(the_column & ":" & the_column).EntireColumn.Hidden = True
End If
Next rep
End If
End Sub
И это в (общем) >> GetColumnLetter_ByInteger в модуле 1.
Public Function GetColumnLetter_ByInteger(what_number As Integer) As String
'This section obtains Column letter of selected week.
GetColumnLetter_ByInteger = ""
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