【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)
動きを動画にしたので参考まで
スポンサーリンク