dポイントプレゼントキャンペーン実施中!

プログラミング初心者です。少し教えていただけないでしょうか?
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

以上のようなプログラムで動くかどうか不安でしたので
新たにプロジェクトを作り直し試みたところ動作したので
ほんとうのプログラムにこの部分のロジックを組み込んで動作させたところ
”オブジェクト参照がオブジェクト インスタンスに設定されていません。”のエラーが返り正常に動作しませんでした。
テキストボックス名などがテストプログラムなどとは異なりますが
他に異なる部分はありません。
なぜこのようなエラーが発生してしまうのでしょうか?

また、もっと効率のよい方法がある場合はその方法もご教示願えないでしょうか?
大変お手数ですがよろしくお願いいたします。

A 回答 (1件)

For i = 1 To 3


'ControlName = "TextBox_top" & i.ToString
If lines(i) = "No." & vbCrLf Then
Else
MsgAll = MsgAll + lines(i)
End If
Next
Clipboard.SetDataObject(MsgAll)
    • good
    • 0
この回答へのお礼

さっそくの回答ありがとうございます。
わざわざコントロール名を取得して・・・なんてことをしなくても
よかったんですね。
ありがとうございます。
参考にさせていただきます。

お礼日時:2007/05/06 11:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!