#excel #vba
#excel #vba
Вопрос:
Я пытаюсь понять функцию range с помощью макроса VB, чтобы упростить работу с отчетами. В Интернете есть много справок об этом, но это работает только для одной ячейки. Я хочу, чтобы это решение работало для нескольких ячеек, расположенных в столбце.
Я хочу использовать командную кнопку.
Я упрощу сценарий. Если ячейка A1 = «1», то B2 должен сказать «Зеленый». Если «2», то «Желтый», а если «3», то «Красный».
Private Sub CommandButton1_Click()
Dim TrafficCode As Integer, TrafficSignal As String
TrafficCode = Range("A1").Value
If TrafficCode = 1 Then TrafficSignal = "Green" Else
If TrafficCode = 2 Then TrafficSignal = "Yellow" Else
If TrafficCode = 3 Then TrafficSignal = "Red"
Range("B1").Value = SA3
End Sub
Для меня все это отлично работает для одной ячейки (A1).
Но что, если я хочу сделать более одной ячейки? Допустим, у меня есть ячейки A1: A5 с 1, 3, 2, 3, 2
Как мне заставить их отображать зеленый, красный, желтый, красный, желтый в B1: B5?
Я, очевидно, пытаюсь отредактировать диапазон («A1: A5») и т. Д., Но я получаю сообщение об ошибке.
Приведенное ниже не работает для меня.
Private Sub CommandButton1_Click()
Dim TrafficCode As Integer, TrafficSignal As String
TrafficCode = Range("A1:A5").Value
If TrafficCode = 1 Then TrafficSignal = "Green" Else
If TrafficCode = 2 Then TrafficSignal = "Yellow" Else
If TrafficCode = 3 Then TrafficSignal = "Red"
Range("B1:B5").Value = SA3
End Sub
Явно чего-то не хватает. Я думаю, что логика, которую я использую, неверна.
Кто-нибудь может помочь?
Ответ №1:
Взгляните на это:
Sub Traffic_Light()
Dim myRange As String
Dim rCell As Range
myRange = "A1:A5"
For Each rCell In Range(myRange).Cells
Select Case rCell.Value
Case Is = 1
rCell.Offset(0, 1) = "Green"
Case Is = 2
rCell.Offset(0, 1) = "Amber"
Case Is = 3
rCell.Offset(0, 1) = "Red"
Case Else
End Select
Next rCell
End Sub
Он проходит по диапазону, проверяет значение, затем помещает некоторый текст в столбец рядом со значением. Этого должно быть достаточно, чтобы вы начали.