• 締切済み

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

  • Excel VBA ListBoxについて

    お世話になります。 Excelで以下のようなフォーム画面を作成しております。 1.フォーム画面には、リストボックス、テキストボックス、登録ボタンを設定 2.リストボックスには、Sheet1のデータが表示される。 3.リストボックスのレコードを選択すると、選択した値がテキストボックスに表示される。 4.登録ボタンをクリックすると、テキストボックスのデータが、Sheet1に反映される。 今1~3まではできましたが、4で悩んでおります。 テキストボックスの値を取得してセルに反映させようと以下のコードを書きました。 'リストボックスで選択したレコード数 ListNo = Me.ListBox1.ListIndex 'TextBox1の値を、Sheet1のセルにセット Sheets("sheet1").Cells(ListNo, 1).Value = Me.TextBox1.Value  これを実行すると、何故かここから3のリストボックスのレコードをクリックしたイベントを呼びます。 Private Sub ListBox1_Click() クリックしてもいないのですが、Private Sub ListBox1_Click() を呼ばないようにしたいので、 ListBoxをEnableプロパティをfalseにしても、呼んでました。 呼びにいかない方法をご教授いただけますでしょうか。 よろしくお願いいたします。

  • 【Excel VBA】Sheet1上のテキストボックスの値をクリアしたい

    Office2003を使用しています。 Excelで、 Sheet1に作成したテキストボックス『BOX_A』 Sheet1に作成したコマンドボタン『PUSH_A』があります。 PUSH_Aを押下時、BOX_Aの値をクリア(消去)したいのですが、うまく行きません。 (BOX_Aに連結しているセルをクリアしても、テキストボックスには数字が残ります) どのようにコーディングしたらよろしいでしょうか?

  • Mac2008Excelの使い方

    Sheet1のセルの中の値をSheet2のセルに反映させるのにはどうしたら良いのでしょうか ・=Sheet1!A1とSheet2の反映させたいセルに代入したのですが上手く行きません よろしくお願い致します。

  • VBA

    エクセルのVBAで下記のようにすると テキストボックス1=10,テキストボックス2=20の値を入力すると セル"A1"に1020と表示されます。合計を求めるにはどうすればよろしいですか?  ―・*・/は、正しい答えが表示されます。 Private Sub InputBtn_Click() Worksheets("Sheet1").Range("A1") = TextBox1.Text + TextBox2.Text End Sub

  • エクセルVBA 別シートからのコンボボックス連動

    エクセルVBA 別シートからのコンボボックス連動について Book1(多人数入力用ブック) ・入力シート ・データ用シート Book2(反映用ブック) ・シート1 Book1にコンボボックスが2列 テキストボックスが2列 * 6行のユーザーフォームを作成しました。 コンボボックス1 コンボボックス2 テキストボックス1 テキストボックス2 コンボボックス3 コンボボックス4 テキストボックス3 テキストボックス4 ・ ・ ・ 左のコンボボックスで「あ」が選ばれたときには、右のコンボボックスで「あ行の顧客」・・・というように連動させたいと考えております。 データ用シートのデータは、   A      B          C 1 あ あ行で始まる顧客 か行で始まる顧客 2 か 3 さ 4 た 5 な 6 Private Sub UserForm_Initialize() Dim c As Range ComboBox1.RowSource = "データ用シート!A1:A9" End Sub Private Sub ComboBox1_Change() 'Dim Rng As Range 'Dim i As Long i = ComboBox1.ListIndex If i > -1 Then Dim c As Range Set Sh = Worksheets("データ用シート") Set Rng = Worksheets("データ用シート").Range("B2:I30") ComboBox2.Value = "" ComboBox2.RowSource = Rng.Columns(i + 1).Address End If End Sub 上記コードですと、コンボボックス2が入力シートのデータを表示してしまいうまくいきません。 欲をいえば、 Book1(多人数入力用ブック)入力シートの特定セルに コンボボックス2・テキストボックス1 コンボボックス4・テキストボックス3というように続けて1セルに反映 Book2(反映用ブック)シート1に コンボボックス2・テキストボックス1・テキストボックス2 を各1セル 1行に反映させたいと考えております。 まったく知識がないのですが 仕事上どうしても必要となったので、各種サイトを見よう見真似でやっております。 ご助力いただければ幸いです。

  • エクセルについて質問です。

    ユーザーフォームの使い方で、テキストボックスやコンボボックスのControlSourceを,フォームを開いたのとは別のシートのセルにあてたいんですけど、できますか? 同様に、コンボボックスのRowSourceのリストも、別のシートの値を拾いたいんです。 具体的に言えば、ユーザーフォームを開くのは、常に「Sheet1」であって、入力した内容を表示するのは「Sheet2」なのです。 コンボボックスのリストは本当は、「Sheet3」の値を拾いたいのです。 今はよくわからないので、全部「Sheet1」にリンク(?)させて、値を取得させるようにしてます。 それと、セルの数式の中に別のセルの数値を代入できますか? 例えば、あるセルの数式が「=Sheet2!A4」だとしましょう。 この場合の「Sheet2」の「2」に、例えば、ある別のセルの値を代入して、 「=Sheet3!A4」とかにしたいのです。 つまり「=Sheet”A1”!A4」みたいにして、「A1」のセルの値が 「2」、「3」に変われば元の数式も変わる、みたいに。 同じように、セルの範囲につけた名前や、リンクするファイルの名前も数式の変数に入れられるのでしょうか? とりあえず、セルの数式の中に、別のセルの値を”文字”や”数値”として入れたいのです。 ちょっと説明がわかりにくいかもしれないけど、教えて下さい。

  • VBAでvlookupみたいに

    いつもわかりにくい質問ないようですみません。 今回もどういっていいわからないので、やりたいことを順を追って 書きますので、教えてください。 質問1) (1)VBAユーザーフォーム1でテキストボックスに入力 例)テキストボックス1・・・1200   テキストボックス2・・・えんぴつ これをエクセルシート1に反映させる。(下のように)    A    B 1 1200 えんぴつ 2   (2)ユーザーフォーム2でテキストボックスに  (1)のテキストボックス1で入力した数字を入力すると、  (1)のテキストボックス2の文字列を自動で反映してくる。 ・・・のように。 もうひとつ。 質問2) エクセルセル内のデータをVBAのテキストボックスに読み込む際、 元のエクセルセルに書式設定をしている場合に、書式ごと読み込むにはどうしたらいいですか? エクセルセル・・・吉田様(様は書式設定) テキストボックスに読み込んだ場合は、「吉田」のみが読み込まれてしまいます。 よろしくお願いします。  

  • VBAで区切り文字について

    セルに「○○○/△△△/×××_◇◇◇」もしくは「○○○/△△△/×××_◇◇◇」という形式でデータが入力されています。 ユーザが対象セルを選択して、ワークシート上のボタンをクリックすると、各変数に下記のようにVBAで値を代入させたいのですが、 どのようにしたらよろしいのでしょうか。 basyo1 = ○○○ basyo2 = △△△ basyo3 = ◇◇◇ ご教授下さい。

  • Excelで別シートの内容を図として貼り付けるには?

    教えてください。 Excelで、別シートの一部を図として貼り付けるにはどうしたらよいのでしょうか? 別シートの一部を図として貼り付けてあるExcelファイルを入手したのですが、 どのように作ったのかさっぱりわかりません。 ちなみに、その図を選択すると、左上のセルの場所が出るところには「図2」、その右側の数式や値が出るところには「='Sheet2'!$A$1:$B$3」と書いてあります。 もちろん、Sheet2のA1:B3の中身を書き換えれば、図にも反映されます。 どうぞよろしくお願いしますm(_ _)m

  • 【エクセルVBA】特定のセルに色をつける

    ・やりたいこと ブック1,sheet3で色のついたセルを、ブック2の対応するセルに反映させるというものです。 ブック1 【図左上】sheet1 前年のデータ 【図右上】sheet2 今年のデータ 【図左下】sheet3 sheet1と2で差分のあったセルに色が付いている(セルには差分判断するための計算式有) ブック2 【図右下】 ブック1のsheet3と色が対応するようにしたい。sheet3で色の付いているセル(差分のあったセル) をブック2の対応するセルにも反映させる。 sheetの数は20~30ほど。フォーマットは同じで、データはそれぞれのシートで異なる。 マクロを組むかと思うのですが、どなたかよろしくお願いします。

専門家に質問してみよう