※ ChatGPTを利用し、要約された質問です(原文:テキストボックスに入力された内容をクリップボードにコピー)
テキストボックスに入力内容をクリップボードにコピーするツールを作成する方法
2007/05/05 23:28
このQ&Aのポイント
プログラミング初心者の方が3*3のテキストボックスに入力された内容をクリップボードにコピーするツールの作成方法について質問されています。
質問者は、各行のテキストボックスに入力があるかどうかを判断し、空白だった場合はその行をスキップする方法を考えています。
また、プログラムの一部を別のプロジェクトで試したところ動作したが、本物のプログラムではエラーが発生し、なぜエラーが発生するのかと効率的な方法についても質問しています。
テキストボックスに入力された内容をクリップボードにコピー
プログラミング初心者です。少し教えていただけないでしょうか?
3*3で配置したテキストボックスに入力された内容をクリップボードにコピーするツールを作ろうと思っています。
受付番号 名前 備考
1[TextboxA1][Textbox12][Textbox13]
2[TextboxA2][Textbox22][Textbox23]
3[TextboxA3][Textbox32][Textbox33]
[実行ボタン]
受付番号は入力の簡素化のため"No."という文字列を入力したいと思っています。もっと効率的な方法があると思いますが
実行ボタンを押したときに下記のプログラムを実行すれば
一応クリップボードにコピーできることが分かりました。
Dim MsgAll as string
MsgALL = "No." & Textbox1.text & Textbox12.text & Textbox13.text & vbCrLf &TextboxA2.text (以下Textbox33.textまで)
Clipboard.SetDataObject(MsgAll)
ただし、3*3のテキストボックスは必ずしも全て入力されるわけではないので空白行の場合はその行をジャンプしたいのです。
各行の受付番号のテキストボックスに入力があるかどうかを判断させて空白だった場合はクリップボードにコピーさせなければよいのでは?と考えています。
色々ネットで調べた結果あらかじめ各行の内容を配列に代入しておき、
テキストボックスのコントロール名を取得してFOR文で処理を繰り返す方法を考えました。
lines(1) = "No." & TextboxA1.text & Textbox12.text & Textbox13.text & vbCrLf
lines(2) ="No." & TextboxA2.text & Textbox22.text & Textbox23.text & vbCrLf
lines(3) ="No." & TextboxA3.text & Textbox32.text & Textbox33.text & vbCrLf
For i = 1 To 3
ControlName = "TextBox_top" & i
If Me.Controls(ControlName).Text = "" Then
Else
MsgAll = MsgAll + lines(i)
Clipboard.SetDataObject(MsgAll)
End If
Next
以上のようなプログラムで動くかどうか不安でしたので
新たにプロジェクトを作り直し試みたところ動作したので
ほんとうのプログラムにこの部分のロジックを組み込んで動作させたところ
”オブジェクト参照がオブジェクト インスタンスに設定されていません。”のエラーが返り正常に動作しませんでした。
テキストボックス名などがテストプログラムなどとは異なりますが
他に異なる部分はありません。
なぜこのようなエラーが発生してしまうのでしょうか?
また、もっと効率のよい方法がある場合はその方法もご教示願えないでしょうか?
大変お手数ですがよろしくお願いいたします。
質問の原文を閉じる
質問の原文を表示する
お礼
さっそくの回答ありがとうございます。 わざわざコントロール名を取得して・・・なんてことをしなくても よかったんですね。 ありがとうございます。 参考にさせていただきます。