• ベストアンサー

エクセルでのオートシェイプについての質問です。

エクセルでのオートシェイプについての質問です。 エクセルのシートの一定の決まったセルに数字を打ち込むとそれに連動してオートシェイプの矢印の長さを変更できるようにしたいのですが、わかる方いますでしょうか? 例えばB1に「1.0」、B2に「1.5」、B3に「2.0」を入力した場合、連動してc1,c2,c3にある矢印の長さが変わるものです。 VBAを理解したいのですが、できれば、コピー貼付けできるコードを教えていただきたいのです。

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

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.3

>>>例えばB1に「1.0」、B2に「1.5」、B3に「2.0」を入力した場合 >>B1のセルが=A1*30という形ではうまくいきません。 >ただ、A1セルは、=D1/E1なのです。 最後です。D1~E3何れかのセルに数値を入力されればB列の数値で長さが変化します。 Private Sub Worksheet_Change(ByVal Target As Range)   Dim sha As Shape   With Target     If Intersect(.Cells, Range("D1:E3")) Is Nothing Then Exit Sub     If Not IsNumeric(.Value) Then Exit Sub     For Each sha In ActiveSheet.Shapes       If sha.TopLeftCell.Address = Cells(.Row, "C").Address Then         sha.Width = Cells(.Row, "B").Value       End If     Next   End With End Sub

ranaruheaven1
質問者

お礼

感謝いたします。助かりました。

その他の回答 (2)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

>B1のセルが=A1*30という形ではうまくいきません。 計算式で値が変わってもChangeイベントが動きません。 A1セルでChangeイベントが動くようにすれば良いでしょう

ranaruheaven1
質問者

補足

確かにおっしゃる通りです。 数字をペーストで貼りつけるだけでも、Changeイベントは動かないみたいです。 ただ、A1セルは、=D1/E1なのです。こういう場合、どこを変えればよろしいでしょうか。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

シートモジュールに Private Sub Worksheet_Change(ByVal Target As Range)   Dim sha As Shape   With Target     If Intersect(.Cells, Range("B1:B3")) Is Nothing Then Exit Sub     If Not IsNumeric(.Value) Then Exit Sub     For Each sha In ActiveSheet.Shapes     If sha.TopLeftCell.Address = .Offset(, 1).Address Then       sha.Width = .Value * 10       End If     Next   End With End Sub

ranaruheaven1
質問者

補足

素早い回答で、感謝します。ただ、B1のセルが=A1*30という形ではうまくいきません。 B1のセルが計算式では、不可能なのでしょうか。

関連するQ&A

  • エクセルVBAオートシェイプがあったら、の書き方

    皆さんこんにちは。 エクセルVBAの初心者です。 IFを使った条件分岐が私には難しかったので SELECTCASEを用いてみようと思うのですが条件の書き方が分かりません。 やりたい事は セルA1が「文字が入っていない且つオートシェイプが入っていない場合」のみ アクション(オートシェイプ☆を貼る)を起こしたい、です。 イメージ的にこうなるかな?と思いコードを作成しましたが ケース2の「オートシェイプがあったら」という条件の書き方が分かりません。 Sub オートシェイプ貼り付け()   With ThisWorkbook.Worksheets("Sheet1")   Select Case True     Case .Range("A1").Value <> ""     Exit Sub     Case オートシェイプがあったら     Exit Sub     Case Else       オートシェイプ☆を貼る   End Select End Sub オートシェイプの有無を条件にするにはどのような書き方をすれば良いでしょうか?

  • エクセルからオートシェイプのみ一括削除するには

    エクセルシートにオートシェイプ(矢印など)を貼り付けたシートを作っていますが、何度もシートをコピペで修正してましたら、このオートシェイプ(矢印など)が、何重にも貼り付けられてしまい、膨大な容量になってしまいました。 ひどいところでは、20重くらいになっており、その矢印自体が1500個くらいありひとつずつ消してると1万個を超えることになり気が遠くなります。 シートの文字や、計算式、書式設定、セル巾などは消さずにオートシェイプのみ一括削除したいのですが、いい方法はありませんか。

  • エクセル。オートシェイプ間で書式のみをコピーできませんか?

    エクセル2000を使っています。 オートシェイプの書式設定について質問です。 既にあるオートシェイプAの書式を、同じく既にある オートシェイプBの書式に一致させる作業をしたいと 考えています。 Aが新たに作成されるものであれば、Bの書式を 「オートシェイプの規定値に設定」することにより、 一致させられますが、Aは既存なのでこれでは 反映させられません。 Aが一つや二つくらいならば、新たに書き直しても 良いのですが、沢山あるので、全部やり直しは きついのです。 セルの書式ならば、 「形式を選択して貼り付け」→「書式コピー」 で、書式だけをコピーできるのですが・・・ 同じようにオートシェイプ間で書式をコピーする 方法はないものでしょうか。?

  • エクセルのオートシェイプとグループ化について

    エクセルに図面を貼り付けて、オートシェイプで矢印を描きグループ化したのですが、なぜか図面がダブってコピーされたり、オートシェイプの矢印が消えたりします。このような現象がどうして起きるのかどなたか教えてください。

  • エクセルでオートシェイプのコピー

    エクセル2000を使用しています。 セルの中に書き込んでいるオートシェイプをセルごとコピーしたいのですが上手くいきません。 普通はセルをコピーするだけで自動でオートシェイプもコピーされると思うのですが。

  • エクセル2000で、オートシェイプのコピペがずれる

    エクセル2000で勤務表を作っています。 オートシェイプで楕円を作り、中に夜勤の文字を入れてます。 この、「夜勤の丸印」をコピーして、貼り付けると、その下のセルに貼り付けになります。 例えば、Aさんが3日の日に夜勤だとすると、Aさんの3日のところのセルに貼付けすると、その下のBさんのセルに張り付いてしまいます。 以前は、うまくいっていましたが、何が、原因でしょうか。 ctrlボタンを押しながらドラッグする方法もありますが、セルにぴったり入れるのに苦労しますので、セルをクリックして貼り付けるほうがいいのですが。

  • エクセルのオートシェイプの内容を特定のセルにコピー

    エクセルのオートシェイプの内容を特定のセルにコピーしたいのです 詳しい流れとしては・・ ・エクセルシートの特定の列にはあらかじめ上から「(1)、(2)、・・(10)」と記入されている ・新規オートシェイプ(主に吹き出し)をシート上に作成 ・オートシェイプのテキストの内容を「(1) ・・・・・」と記入 ・記入が終了すると、記入されてあった番号と同じセル(この場合(1))にテキストの内容をコピーする ・続けて新規でオートシェイプを作成し、同様に「(2) ・・・・」と記入 という流れなのですが、わかりますでしょうか セルの内容をオートシェイプにコピーはわかるのですが、逆がわかりません。 宜しく御願いします

  • エクセルのオートシェイプのコピー

    「○」印などのオートシェイプがついたエクセルファイルを別のファイルのシートにコピー、ペーストすると、文字等はコピーされるのですが、「○」などのオートシェイプがコピーされません。どうしたらいいのでしょうか。

  • オートシェイプをクリックしてマクロを実行するには?

    EXCEL97です。 オートシェイプをクリックまたはダブルクリックされたことをひろってVBAが実行されるようにしたいのですができるのでしょうか。 セルであればワークシートのイベントでできるのですが図形でのやり方がわからず困っています。 ちなみに図形には直線、四角形(テキストも)、矢印などが対象になります。 すみませんがご教授お願いします。

  • オートシェイプ(矢印)の貼り付け

    EXCEL2000を使用しています。 オートシェイプで矢印を描き、それを選択してコピーし、任意のセルを選択して貼り付けすると全く別のところに貼り付けられます。 思いのセルに貼り付けることは可能でしょうか? とりあえず、CTRLキーを押してドラッグするか、都度作成するようにしています。

専門家に質問してみよう