プロが教えるわが家の防犯対策術!

Excel VB (Excel 2007) の質問

Sheet1のセルD1、D2、D3に文字が入力されています。
そして同じシート上の任意の場所にテキストボックスが配置されています。
テキストボックスには"テキスト ボックス 1"、"テキスト ボックス 2"、"テキスト ボックス 3"と名前がつけられています。

セルD1の値を"テキスト ボックス 1"に複写、セルD2の値を"テキスト ボックス 2"に、セルD3の値を"テキスト ボックス 3"に
複写したいのですがどのようにすればいいのでしょうか。

インターネットのQ&Aで調べましたが同じような質問でも難しすぎて理解できません。
例えば以下のように簡単にできないでしょうか。
D1の値を"テキスト ボックス 1"に複写する場合

Range("D1").Select
Selection.Copy
ActiveSheet.Text."テキスト ボックス 1".Activate  'テキストボックスを選択(アクティブ)する記述が解りません。
ActiveSheet.Paste                 ’選択したテキストボックスに貼り付ける方法もわかりません。

勿論上記の記述ではうまくいきません。
VB初心者でお手数をおかけしますがよろしくお願いします。

A 回答 (3件)

テキストボックスにセルの値を入れるのだけならマクロは必要はありません。


 
【操作手順】
 ・テキストボックスス「テキスト ボックス 1」を選択する。
 ・数式バーで「=D1」を入力して【Enter】キーを押す。

  以上を"テキスト ボックス 2"、"テキスト ボックス 3"を同様に行う。

ネットでも色々説明しています。以下は手順を絵的に説明しています。
http://www.bayclotho.jp/blog/archives/907
    • good
    • 0
この回答へのお礼

早速の回答有難うございました。
こんなに簡単にできるとは驚きました。

お礼日時:2011/05/02 23:01

>テキスト ボックス 1"に複写


ここに、質問者が、エクセルのことがよく判ってない点が在るようだ。
テキストボックス=テキストの値だけを保持できる。リッチテキストのテキストボックスなんていうのもあるが、別として。
一方
エクセルのセル=セルの値、表示形式、文字色などの書式、コメント、関数式、など重畳的な仕組みになっている。このことが理解できてないのでは。
そして複写というのは後者を総体的に移すことをねっらって言う言葉。
だから本件では代入というべきなんだ。
ーーー
一部の図形で数式バー部に=A1などと入れて図形のテキストに出来るものもあるが、その話ではなかろう。
普通には、エクセルVBAでは
Sub test01()
Worksheets("Sheet1").TextBox1 = Range("A1")
End Sub
を実行する。
エクセルVBAでは2つあって、上記はシートにテキストボックスを貼り付けた場合である。
Worksheets("Sheet1").を忘れるな。
もうひとつはユーザーフォーム上にテキストボックスを貼り付ける場合で
Private Sub UserForm_Click()
UserForm1.TextBox1 = Range("A1")
End Sub
このイベントは不自然ともいえるが。
この2つの区別の質問者には出来てないのでは。
ーーー
それとテキストボックスの値をテキストボックスの入力分から拾うキッカケは、コマンドボタンのクリックなどでとらざるを得ない
入力キーストローク中もテキストに出していく考えもあろうが。
Private Sub CommandButton1_Click()
UserForm1.TextBox1 = Range("A1")
End Sub
シート上にコマンドボタンがあるなら、Sheet1のシートモジュールに
Private Sub CommandButton1_Click()
Worksheets("Sheet1").TextBox1 = Range("A1")
End Sub
こう言うことも質問には書いてない。情況の説明(特にイベントとの絡み)が全的になされていない。
ーー
まだまだエクセルとVBAを経験する必要がありそう。
ーー
どちらかというと、シートのセルの値をテキストボックスに持っていく場合は、頻用されないと思うが、どういった使い方なのかな。
逆のためのコントロールで使われるのが多いと思うので。またテキストボックスはシートのセルで代用することも出来なくは無いから。
    • good
    • 0
この回答へのお礼

丁寧な回答ありがとうございました。
勉強不足であることが良くわかりました。
もっとVBの勉強をします。

お礼日時:2011/05/02 22:48

コピー&ペーストではなく、「値の代入」と考えればよいのではないでしょうか。



Me.[テキスト ボックス 1] = Me.Range("D1").Value
Me.[テキスト ボックス 2] = Me.Range("D2").Value
Me.[テキスト ボックス 3] = Me.Range("D3").Value
    • good
    • 0
この回答へのお礼

こんなに早く回答をいただきありがとうございました。
丁寧な回答で問題は解決しました。

お礼日時:2011/05/02 23:03

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A