• ベストアンサー

エクセル、マクロ詳しい方に質問

例えばA1のセルに数字の1を入れたら そのA1セルの文字の真上に (透過処理を行っている)オートシェイプを表示させることは可能でしょうか なおかつ、表示されたオートシェイプに邪魔されることなく 数字を変更させることができるようになりますか また数字を入れた後、その数字を消したら 表示されたオートシェイプも一緒に消えるようにしたいのです これは出来るがこれは出来ないなどでもいいです 計算式やマクロ何を使ってもいいですが、 できるだけ単純なものがよいです 難しいと思いますがお願いします

noname#225437
noname#225437

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

  • ベストアンサー
  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.1

結論から言うと・・ > A1のセルに数字の1を入れたらそのA1セルの文字の真上に > (透過処理を行っている)オートシェイプを表示させる →可能です。  (私なら)マクロを使います。 > 表示されたオートシェイプに邪魔されることなく > 数字を変更させることができるように →オートシェイプの形状・大きさに依りますが、基本的には可能です  普通にオートシェイプを置いた時のことを考えて頂ければわかると思いますが、  背景が透明のオートシェイプの場合、その線以外の場所をクリックすると、  その下のセルを選択できます。  マクロでオートシェイプを置こうと、それは変わりません。   > その数字を消したら > 表示されたオートシェイプも一緒に消えるように →可能です。  (私なら)マクロを使います。 そんなわけでマクロ(VBA・VBE)の使い方は別途お調べいただくとして、 該当シートのモジュールに以下を貼ります。 Private Sub Worksheet_Change(ByVal Target As Range) Dim TLeft As Single, TTop As Single Dim TWidth As Single, THeight As Single Dim TAddress As String On Error Resume Next   With Target     TLeft = .Left: TTop = .Top     TWidth = .Width: THeight = .Height     TAddress = .Address   End With   If Target.Value = 1 Then     ActiveSheet.Shapes.AddShape(msoShapeSun, TLeft, TTop, TWidth, THeight).Select     With Selection       .ShapeRange.Fill.Visible = msoFalse       .Name = TAddress     End With     Range(TAddress).Select   ElseIf Target.Value = "" Then     ActiveSheet.Shapes(TAddress).Delete   End If End Sub 任意のセルに「1」を「数値として」入力すると、 そのセルに合うようにオートシェイプが置かれます。 背景を透明にしているので「線以外の場所」をクリックすると その下のセルを選択できます。 この「1」を削除(Deleteボタンのみ)すると、オートシェイプも消えます。 ちなみにこのコードだと「1」以外の数字には反応しません。 他の図形にしたい・色を変えたい・「1」以外にも反応させたい などなどは、別途お調べくださいませ。

noname#225437
質問者

お礼

詳しくご回答ありがとうございます。 もしよろしければ、 ・大きさや形を決まった図形を別のセルに用意しておきそれをそのまま表示させるマクロ ・図形を赤色で表示させるマクロ ・1~300まで対応できるマクロ を回答して頂いたマクロにプラスして教えていただければ本当に助かります。

その他の回答 (1)

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.2

>> 他の図形にしたい・色を変えたい・「1」以外にも反応させたい >> などなどは、別途お調べくださいませ。 と書いておきましたが、ご理解いただけなかったようで。 ご自身でメンテナンス出来ないようなら、マクロは使わない方が良いです。 私はプロ(代金を徴収してお教えする立場)ではありませんので、 個別にゼロからお教えする気もありませんし、 個別に細やかなサポートをする気もありません。 「学習のお手伝い」になれば幸いと思い、回答しているだけです。 おそらく、他の回答者さんも同様の考えと思います。 以上を念頭に、ヒントだけ。 エクセルには「マクロの記録」と言う機能があります。 WEBで検索すると使い方を解説しているサイトがジャンジャンヒットしますので、 まずはご自身で調べて、その使い方は理解してください。 さて、「マクロの記録」機能を使って、お望みの操作をしていきます。 > ・大きさや形を決まった図形を別のセルに用意しておきそれをそのまま表示させる 「別のセルに図形を用意しておく」「そのまま表示させる」、というキーワードから、 用意した図形をコピー・貼り付けする動作だと推測できます。 「マクロの記録」を起動し、 ・用意した図形をコピー ・別のセルに貼り付ける と言う動作をし、「マクロの記録」を終了します。 すると、今の動作を行うコードが出来ているので、 お好みのセルをコピー元に出来るように、前のコードを参考にしながら改編してください。 > ・図形を赤色で表示させる すいませんが、これにはマクロは関係なさそうです。 「用意しておいた図形」の枠線を赤にしておけば良いだけです。 そもそも白や透明で、コピー後に色を変えるのであればこの操作も必要かもしれません。 でも、これも「マクロの記録」でベースを作ることは可能です。 前のコードと組み合わせて改編してください。 > ・1~300まで対応できる 意味が不明瞭です。 1~300行でしょうか?1~300列でしょうか? このどちらかだとする場合、 変更されたセルはTargetと言う変数に格納されますから、 行であればTarget.Row、列であればTarget.Columnで取得できます。 「これが300以下の時に処理(それ以外はスルー)」と言う条件を付ければ出来ます。 例えば、   If Targer.Row >= 300 then     処理   End If と言う感じです。 よく使う処理ですから、覚えるためにもご自身で調べる方が良いでしょう。 調べて、試して、その上で「何をどうしたが、ここがわからない」のであれば 回答者さんも快くアドバイスをくれるでしょう(私も同様です)。 「初心者だからゼロから作り上げてくれ」と言うのは根本的なところで間違えていますよ。

noname#225437
質問者

お礼

自分で言うのもなんですが、ごもっともです それにも関わらず、色々と教えてくださり助かりました 貴重なお時間を割いて頂き 丁寧に分かりやすくご説明して頂いた事に感謝します

関連するQ&A

  • Excel マクロについて

    Excelで、セルを選択して、マクロを実行すると、その選択したセルに赤マル(オートシェイプの)がはいるようなマクロをつくりたいのですが・・・。まだ、マクロは使ったことが無いもので・・・。詳しくお願いします。

  • EXCEL 範囲指定後矢印線を引くマクロの作り方

    範囲選択した任意(例:A1~C1)のセルに、オートシェイプの矢印線を自動的に引くマクロの作り方を教えて下さい。 できれば、矢印線の始点にオートシェイプの丸(黒丸ではなく白丸)も一緒に引けるマクロも教えて下さい。 範囲指定するセルの長さは一定ではなく、長さがいろいろになります。 工程表を作成するにあたり、同じ手順を繰り返す為、マクロ化したいです。

  • エクセルマクロでの丸囲み文字

    初めて質問します。 エクセルについてです。 あらかじめ一つのセル内には文字が入っていまして、 マクロのショーカット等でキーを押すとそのセル内の 文字にオートシェイプの丸が付くようにしたいのです。 例) 1.あらかじめ各セル内に1 2 3が入力されている。 1  2  3   (各セル内) 1  2  3   (各セル内) 1  2  3   (各セル内) 1  2  3   (各セル内) 2.マクロのショートカットキー等を押すと1 2 3を丸で囲める。 (1)  2 3   (各セル内) 1  (2) 3   (各セル内) (1)  2 3   (各セル内) 1  2 (3)   (各セル内) 以上です。 ここで、例)では1,2,3としてますが、I,II,IIIを使用したく、 I,II,IIIの丸付文字はないので、オートシェイプの丸しかないの かなと思います。 このようなマクロができるのなら教えていただきたいです。 ちなみに私はマクロは判りません。 以上です。 使用OSはWinXP、エクセルは2003です。 どなたか判る方いましたら、教えていただけないでしょうか? よろしくお願いします。

  • Excelでマクロを消すには

    マクロが組み込まれているExcel2003のファイルがあります。 マクロについて詳しくわからないのですが、複数の伝票シートを一括印刷するボタンがあったり、 チェックボックスに応じてオートシェープや文字が切り替わる機能があります。 この伝票のひな形だけを使いたく、枠や文字だけを新しいシートに値でコピーし、 別名で保存しました。 ボタンやオートシェープはありません。 また、ツール→マクロを選んでも特に何も見当たりませんでした。 しかし、このファイルを開くたびに このファイルにはマクロが…  [マクロを有効にする][マクロを無効にする] というダイアログが表示されてしまいます。 マクロを消すといいますか、このダイアログが表示されないようにする方法がありましたら 教えてください。 よろしくお願いいたします。

  • エクセルのマクロ

    セルA1に、a2からa90までの任意の文字を入力した後にマクロを実行します。 セルA1にa7と入力されている時はセルB1にa6と表示され、セルA1にa86と入力されている時はセルB1にa85と表示されるようなマクロを教えてもらいたいのですが。 B1は必ずA1の数字の部分が1つ少なくなるということです。      

  • EXCELマクロVBAについての質問です。

    たとえば、 Selection.AutoFilter Field:=1, Criteria1:="a" オートフィルターで"a"を選んでいるわけですが どこかのセル(例えばA1)に入力規則でa~dを設定して、その選んだ文字に応じて 上記のコードの"a"を変更するのは可能でしょうか? もっとわかりやすく言うと、A1に入力されている文字を参照するようなマクロです。 今までは上記のa~d毎でマクロコードを作成していたのですが、 質問事項が可能であれば、マクロコードは一つで済みます。 理解できる文章になっていますでしょうか? 誰かお詳しい方、教えて下さい。 意図に沿っていれば代替策でも結構です。よろしくお願いします。

  • エクセル2010のマクロについての質問です。

    エクセルにてマクロを組もうと色々調べているのですが、 どうしてもわからないため教えていただきたいことがあります。 現在、マクロを実行すると固有の文字をアクティブセルに挿入するというマクロを作成しました。 このマクロを少し改造したいのですが、A1とB1に=のものが入っている行の特定の列のセルに固有の文字を挿入するという風にしたいです。 例えば、Aの列にはA1には1、A2には2という風に順に10間での数字が入っていて、 B1には9が入っている場合、C9のセルに固有の文字を挿入するという感じです。 B1を7に変えた場合、C7に固有の文字が挿入されるという感じにしたいです。 質問の仕方が下手でわかりにくいかも知れませんがお知恵をお貸しください。 よろしくお願いします。

  • エクセルマクロに詳しい方

    すいません教えて下さい。  例えば、A1のセルに30、A2のセルに5 A3のセルに7 といった感じで数字があるとして どこかの列のある位置 を基準として 例えば C列の先頭から A1のセルにある 数字の分だけ色分けるマクロってどのようになるのでしょうか この場合 C1からC30までが黒 C31~35までは緑 といった具合にしたいのです。 A列に入る数字は必ずしも 一定ではありません。  できましたら、 マクロを簡単に書いて頂けると大変うれしいです。 よろしくお願いします。

  • エクセルマクロに詳しい方

    いつもご質問ばかりで申し訳ございません。 エクセルのマクロで質問なんですが、ある列のある範囲(例えばG列の3~20)の各セルの間(G3とG4、G4とG5といった感じです)にオートシェイプの矢印マークを書き込む マクロって可能なのでしょうか?矢印の向きは左向きで、長さは矢印のみぐらいの長さで、矢印の角度はなしです。 もしこんなマクロが可能なら教えて下さい。 よろしくお願い致します。          以  上

  • マクロでオートシェイプを表示したいのですが(泣)

    マクロが理解できない初心者です。 エクセルで書類を作成しているのですが 「特定のセルに入力された文字列を 楕円のオートシェイプで囲む」といった要領で 分類する項目が大量にある書類を作成することになり マクロの記録を使ってマクロを作成しようと試みたのですが うまくいかず、困っています・・・ VBAなどで記入してマクロを作るということは 検索してわかったのですが 勉強する時間的余裕がありません・・・ どなたかご教授ください おねがいします。 例 |新規|継続|といった項目のどちらかを分類するために 囲みたいセルをダブルクリックすると 楕円のオートシェイプで項目の文字列を囲むいう感じです。 ダブルクリックするとシェイプが表示され さらにダブルクリックすると非表示になるといったマクロが できないでしょうか?

専門家に質問してみよう