• 締切済み

VBAで図に文字を載せたい

VBA超初心者です。教えてください。 エクセルのセルの値を図に反映させようとしています。 Sheet1にあるデータは __A_____B_______C______D________E______ 5| D - data1 - data2 - data3 - data4 6| 1 - abcd - efgh - ijkl - mnop 7| 2 - kirin - panda - dog - cat 8| 3 - red - blue - green - white ・ ・ ・ このような感じで以下100以上続きます。 これを、例えばID3を選択すると自動的に、図の中にあるテキストボックスに「red」「blue」「green」「white」と値が代入する仕組みを作りたいのです。 現在考えているのは sheet1のとあるセルに数字3と入力してボタンをクリックすると、その数字のIDのデータを読み込んでSheet2!A1に=sheet1!7Bと代入する。(ここができません!) そしてSheet2の図にはテキストボックスを用意して、=Sheet2!A1と記入することでSheet2!A1の値を反映させる。(これはうまくいきました) 扱うデータが多すぎるためID1つ1つにボタンを作成するのは不可能です。 何卒ご教授ください。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。Wendy02です。 今日は、あまり込み入ったことは書くつもりがなかったので、簡単にコメントしておきます。 >テキストボックス1には「red」と、テキストボックス2には「blue]と、3つ目には「green」、4つ目に「white」と表示させていきたいのです。 たぶん、出来ますが、問題は、「テキストボックス1」,「テキストボックス2」,「テキストボックス3」,「テキストボックス4」 という、オブジェクト名は確実かどうか、ということぐらいですね。それさえ確実なら、そんなに問題ないと思います。そうでなくて、セルから「テキストボックス」を探すとなると、ここのカテゴリの別の質問にも出ていますが、別途、プログラムをつけないといけません。 >いきなりこんなのやってくれと言われてExcel ここらのオブジェクトの扱いは、本にも載っていなくて、すごくややこしいのです。うまくインテリセンスが利かないことが多いようです。もともと、このオブジェクトは、統合されたもので、もともとは、それぞれが独立していたものだと思います。 今、その辺りを簡単に書くと、以下のようになります。これでうまくいけばよいのですが、実務では、思ったようにいかないことも多いです。 たぶん、プログラム経験があれば、読めるかと思います。VB系は、このように雑に書いても良いのです ^^; Sub TextBoxEnterTxt() Dim i As Integer Const j as Integer =8 'シート1の B列8行目の 横4列のデータを入れていく For i = 1 To 4  On Error Resume Next  With Worksheets("Sheet2").Shapes("Text Box " & i).TextFrame    .Characters.Text = ""    .Characters.Text = Worksheets("Sheet1").Cells(j,2).Offset(, i).Value  End With  On Error GoTo 0 Next End Sub

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 最初に、良く分かりません。基礎的な情報が欠けているようです。たぶん、それがはっきりすれば、どなたにでも回答が可能だと思います。 例えば、 「ボタン」をクリックすると、 ----コントロールツールのコマンドボタンですか? 「あるセル」に(仮に、「B1」 とします。そうしないと、話が進みません。あるセルはいつまでもあるセルです) その数字のIDの「データ」を読み込んで------「データ」って何ですか? ID の 「3」でしたら、「red - blue - green - white」を指すのですか? 「Sheet2!A1に=sheet1!7Bと代入する。」---もし、そうなら、複数のセルのデータをひとつのセルのデータに入れることになります。これは正しいですか? * Sheet2の図には「テキストボックス」---テキストボックスはオートシェイプのテキストボックスですか?「=Sheet2!A1と記入することでSheet2!A1の値を反映させる。(これはうまくいきました)」 これは、Version は、Excel 2002以上ですね。 オートシェイプに数式を埋め込む方法ですか? 私は、数式から反映させる方法はあまり関心しません。理由は、オブジェクトの中に数式を中に残してしまうと、後々、取り出すのが面倒だからです。シート全体も重くなります。ダイレクトにテキスト・データを入れるほうがよいです。 例: Sub TestShapes()  With ActiveSheet.Shapes(1).TextFrame    .Characters.Text = ActiveSheet.Range("B7").Value  End With End Sub

yukky2006
質問者

補足

回答ありがとうございます! エクセルは基礎的な部分は知っていてプログラムもC,Java,Matlabなどを触っていますが、マクロについてはまったくの無知なのです。いきなりこんなのやってくれと言われてExcelをいろいろ触っているうちに迷い込んでしましました。。 >「ボタン」をクリックすると、 ----コントロールツールのコマンドボタンですか? そのとおりです! >ID の 「3」でしたら、「red - blue - green - white」を指すのですか? もしIDが3だったら、テキストボックス1には「red」と、テキストボックス2には「blue]と、3つ目には「green」、4つ目に「white」と表示させていきたいのです。 完成したときに、IDを選択すると図にある複数のテキストボックスに文字が反映されるマクロを作成したいのです。

関連するQ&A

専門家に質問してみよう