こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

複数コントロールテキストの同一セルへの入力

はじめまして。

エクセルVBAについて質問させて頂きます。

ユーザーフォームにラベル・テキストボックスそれぞれ1~6があって
ラベルのキャプションとテキストボックスのテキストをセル同一セルに
入力したくて


With UserForm1

Range("A1") = .Label1.Caption & .TextBox1.Text & .Label2.Caption & .TextBox2.Text _
& .Label3.Caption & .TextBox3.Text & .Label4.Caption & .TextBox4.Text _
& .Label5.Caption & .TextBox5.Text & .Label6.Caption & .TextBox6.Text
End With


と、このように記述したのでが、これをもっと簡潔に書く方法はございませんでしょうか?


ご教授よろしくお願いします。

投稿日時 - 2012-02-22 13:20:21

QNo.7320331

OGN

困ってます

質問者が選んだベストアンサー

簡潔かと言われると微妙ですが、↓なら見た目スッキリはします。

With UserForm1
  For i = 1 To 6
    Range("A1") = Range("A1") & .Controls("Label" & i).Caption
    Range("A1") = Range("A1") & .Controls("TextBox" & i).Text
  Next i
End With

投稿日時 - 2012-02-22 13:51:48

お礼

ご回答ありがとうございます!

お礼を入力したつもりが出来ていなかったみたいで
申し訳ありません。

.Label1.Caption & .TextBox1.Text ~とダラダラしてたものが
かなりすっきりしました!

本当にありがとうございました。

投稿日時 - 2012-02-29 13:36:57

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

テキストボックスでは既定のプロパティがTextで、
ラベルではCaptionのようですので

Sub Macro()

  Dim objControl As Object
  
  For Each objControl In UserForm1.Controls
    Range("A1").Value = Range("A1").Value & objControl
  Next

End Sub

上記でも動作するようです。

投稿日時 - 2012-02-23 01:58:52

お礼

ご回答ありがとうございます。
返信が遅くなってすいません。

ご提案いただいたものを試してみました。
うまくセルに入力することができましたが、思っていたものは
ラベル1→テキストボックス1→ラベル2→テキストボックス2…
といった感じで、これで試してみると
ラベル1~6→テキストボックス1~6
といった感じになってしまいました。

投稿日時 - 2012-02-24 10:18:45

ANo.1

コントロール配列にすればループを使って文字列を作り上げることはできますが、
簡潔になるかといわれると、6個だと微妙なところですね。

投稿日時 - 2012-02-22 13:36:16

お礼

ご回答ありがとうございます。
返信が遅くなってすいません。

確かに6個だと微妙でしたが、使用個数は増えるかもしれないので
コントロール配列を使って頑張ってみます。

投稿日時 - 2012-02-24 10:22:22

あなたにオススメの質問