式の値に応じてラベルの行き先を変更する方法【ExcelVBA】

On GoSubステートメントでOn 式 GoSub 〇〇,△△,××とラベルを複数用意し

1であれば1個目の項目のラベルにいき、2であれば2個目の項目のラベルにいき、3であれば3個目の項目のラベルにいく形

前回のGoSubの値に応じて振り分けるパターン

0の場合はそのまま次のステートメントへ、255より大きい値や負の値の場合はエラーになる

今回はWorkSheetChangeのイベントプロシージャを使用し、シートの特定の箇所が変更されたら

その個所のLeftで左から1文字目を抜き出し、0,1,2,3でその値を変数に入れ、その値に応じて

行き先のラベルを振り分ける形で実践

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

実際に使用したサンプルコード

Option Explicit
'シート内が変更された時起動
Private Sub Worksheet_Change(ByVal Target As Range)

'シートのD11セルが変更されたら
If Target.Address = "$D$11" Then

Dim 選択項目 As Integer

選択項目 = Left(Range("D11").Value, 1)

On 選択項目 GoSub test1, test2, test3

End If

Exit Sub

test1:

'昇順に並び替える命令
Range("B2").CurrentRegion.Sort key1:=Range("C2"), _
order1:=xlAscending, Header:=xlYes
Return

test2:

'降順に並び替える
Range("B2").CurrentRegion.Sort key1:=Range("C2"), _
order1:=xlDescending, Header:=xlYes
Return

test3:

MsgBox "やったー"
Return

End Sub

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です