【Excel/VBA】関数から返す値をTextBox・Label・Rangeどれでも出力できるようにする方法
どこまで需要があるかわかりませんが、汎用性の高いフォームコントロールを作ろうとした際にデータの送り先がフォームコントロール(TextBoxやLabel)だろうがシートのセル(Range)だろうが、どんな相手でも出力できる方法です。
仕組みは単純で、TypeName関数を使ってオブジェクトの中身を判定して、それに応じた処理をするだけです。
Sub callback(obj As Object)
If TypeName(obj) = "Range" Then
obj.Value = "戻り値"
End If
If TypeName(obj) = "TextBox" Then
obj.Text = "戻り値"
End If
If TypeName(obj) = "Label" Then
obj.Caption = "戻り値"
End If
If TypeName(obj) = "CommandButton" Then
obj.Caption = "戻り値"
End If
End Sub
使い方は以下の通り。(果たして需要があるのかどうか…)
'セルに入力
Call callback(Range("A1"))
'コマンドボタンの表示を変える
Call callback(CommandButton1)
'Labelの表示を変える
Call callback(Label1)
'TextBoxに入力する
Call callback(TextBox1)
動きを動画にしたので参考まで
スポンサーリンク