
Excelでユーザーフォームを作りました。
ユーザーフォームには、テキストボックスを2個、ボタンを1個("記入"という文字が入っています)置いてあります。
テキストボックスに入れた数値をSheet1のセル"C24","C25"に転記したいので、ユーザーフォームのコードを次のようにしましたが、エラーメッセージは出ないかわりに何も動いてくれません。
「どこ」と「なに」が違いどうするのが正しいのか教えて下さい。よろしくお願いします。
Private Sub Tbox1_Change()
a = Tbox1.Value
End Sub
----------------------------
Private Sub Tbox2_Change()
b = Tbox2.Value
End Sub
----------------------------
Sub 記入Button_Click()
'入力値をSheet1に転記
Dim a As Range
Dim b As Range
Sheets("Sheet1").Select
Set a = Range("C24")
Set b = Range("C25")
End Sub
No.3ベストアンサー
- 回答日時:
こんにちは。
>Sheet1のセル"C24","C25"に転記
なら、単に、TextBox のそれぞれのControlSource に、Sheet1!C24, Shee1!C25
と書けばよいのですが。
ただ、#2さんも触れていますが、初歩的な基礎がまだ足りないようですね。1週間もすれば、この程度のコードは書けるようになりますから、何か、適当な参考書を手に入れて参照したほうがよいです。
変数のプロパティ ← 値
Set オブジェクトの変数 =実際のセル
こうして変数に格納されます。
Wendy02さん ありがとうございました。簡単なんですね。
ControlSourceをまだ知りませんでした。勉強いたします。
次にボタン2 の Control に移ります。またよろしくお願いします。
No.4
- 回答日時:
Rangeの概念はよく分からないのですが、
気が付いたのは、
・a,bがプロシャージャーレベル変数であるので、
プロシャージャ[記入Button_Click(])内でしか使えず
Tbox■_changeで使用するためには、モジュールレベル変数にして、
そのモジュール全体で使用できる必要があると思います.
・オブジェクト型変数 Renge に value は代入できないのでは?
(こっちが微妙)
valueで代入するなら、変数宣言をintegerにしてみてはいかがでしょうか?
と思います.
よって、私が直したモジュールは、
---------------------------------------
Dim a As Integer'モジュールレベル変数
Dim b As Integer
Private Sub TBox1_Change()
a = TBox1.Value
End Sub
Private Sub TBox2_Change()
b = TBox2.Value
End Sub
Private Sub 記入Button_Click()
Sheets("Sheet1").Select
Range("C24") = a
Range("C25") = b
End Sub
-------------------------------------
また、今回の処理では、TBox■_Change()はあまり意味をなしません.
さらに、changeで毎回監視をしている場合、複雑な処理をする時に、
コンピュータがさらに遅くなる場合があります.
よって、tbox■_change()のプロシャージャは消去して
-----------------------------------------
Private Sub 記入Button_Click()
Dim a As Integer
Dim b As Integer
Sheets("Sheet1").Select
b = TextBox2.Value
a = TextBox1.Value
Range("C24") = a
Range("C25") = b
End Sub
-------------------------------------
または
-------------------------------------
Private Sub 記入Button_Click()
Dim a As Integer
Dim b As Integer
Sheets("Sheet1").Select
Range("C24") = TBox1.Value
Range("C25") = TBox2.Value
End Sub
-------------------------------------
だけでも良いと思います
もちろん、#1さんの形がプログラムとして一番奇麗だと思います
#1さんの Tbox1 と Tbox2 の後に.value を付けたら、数字として使用できると思います.(未確認)
No.2
- 回答日時:
何も動かないのではなく、指示された通りに動作しただけです。
>「どこ」と「なに」が違いどうするのが正しいのか教えて下さい。よろしくお願いします。
変数の使い方、使われ方の理解が無いですね。
>a = Tbox1.Value
「Sub Tbox1_Change()」内部で定義した a と言う変数に値を格納。し、プロシージャの終了とともに消滅。
>Set a = Range("C24")
「Sub 記入Button_Click()」内部で定義した a と言う変数にセルC24を定義(セット)し、プロシージャの終了とともに消滅。
双方の a と言う変数は全く無関係な変数なので、同じ値を共有する事は出来ません。
また、双方とも変数への格納なので、変数の値をどこかに格納する記述がありません。
プロシージャ間で変数を共有する場合は「グローバル変数」を定義する必要があります。
hana-hana3さん ありがとうございました。
ControlSource の記述で、とりあえずの問題は片付きました。
変数のこと、いただいた解説でだんだんわかってきました。勉強いたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
至急!尿検査前日にオナニーし...
-
首吊りどこ締めるの
-
尿検査前日に自慰行為した時の...
-
EXCELで条件付き書式で空白セル...
-
2つの数値のうち、数値が小さい...
-
エクセルのラベルの値(文字列...
-
エクセルで空白セルを含む列の...
-
リンク先のファイルを開かなく...
-
検便についてです。 便は取れた...
-
値が入っているときだけ計算結...
-
尿検査の前日は自慰控えたほう...
-
EXCELで式からグラフを描くには?
-
MIN関数で空白セルを無視したい...
-
小数点以下を繰り上げたものを...
-
Excel 数値の前の「 ' 」を一括...
-
エクセル指定した範囲からラン...
-
EXCELの条件付き書式で数式を空...
-
Excel 0目標に対して数字があ...
-
VLOOKUP関数を使用時、検索する...
-
ある範囲のセルから任意の値を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
彼女のことが好きすぎて彼女の...
-
イタリアから帰国する際、肉製...
-
2つの数値のうち、数値が小さい...
-
健否~書類の書き方~
-
VLOOKUP関数を使用時、検索する...
-
値が入っているときだけ計算結...
-
小数点以下を繰り上げたものを...
-
エクセルで空白セルを含む列の...
-
EXCELで条件付き書式で空白セル...
-
リンク先のファイルを開かなく...
-
ある範囲のセルから任意の値を...
-
精子に血が・・・
-
エクセルで数式の答えを数値と...
-
風俗店へ行く前のご飯
-
エクセル指定した範囲からラン...
-
一番多く表示のある値(文字列...
-
Excel 数値の前の「 ' 」を一括...
-
ワードのページ番号をもっと下...
-
MIN関数で空白セルを無視したい...
おすすめ情報