• ベストアンサー

選択すると楕円を書くVBA

sheet1にて選択された数字を入力するとsheet2にて 該当する項目に楕円で囲むVBAを教えてください。

  • 197658
  • お礼率75% (157/208)

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

  • ベストアンサー
回答No.2

他にも方法があったような気がしますが、とりあえず、こんな感じではどうでしょうか? シートタブを右クリックし、[コードの表示]で、開いた所(VBE)に以下を貼り付けます。 以下は、丸が、セルの大きさを越えないので、少し小さいかもしれません。 '// Private Sub Worksheet_Change(ByVal Target As Range)  Dim shp As Shape  Dim Lf As Double  Dim Tp As Double  Dim Wd As Double  Dim Ht As Double  If Target.Column <> 1 Then Exit Sub '1列目でなければ除外  If Target.Count > 1 Then Exit Sub  If IsNumeric(Target.Value) = False Then Exit Sub '数字でなければ除外    With Worksheets("Sheet2")  For Each shp In .Shapes   If Not Intersect(shp.TopLeftCell, .Rows(Target.Row)) Is Nothing Then    shp.Delete   End If  Next shp  If Target.Value <= 0 Then Exit Sub   With .Cells(Target.Row, Target.Value + 1)    Lf = .Left: Tp = .Top: Wd = .Width: Ht = .Height    '○の大きさは、WdとHtに、足して調整してください。   End With   With .Shapes.AddShape(msoShapeOval, Lf, Tp, Wd, Ht)    .Fill.Visible = msoFalse    .Line.Weight = 1.5 '線の太さ   End With  End With End Sub

197658
質問者

お礼

丁寧な回答感謝申し上げます。 勉強させていただきます。

その他の回答 (1)

  • masatsan
  • ベストアンサー率15% (179/1159)
回答No.1

マクロの記録で記録したらいかがですか?

関連するQ&A

  • VBA|楕円のリンクについて

    いつもお世話になります。 エクセルは2010を使っています。 現在、エクセルで表を作成しています。 表内の一部分に「該当する」「該当しない」の2つの項目があり どちらかに楕円を描かないといけません。 楕円は、「挿入」→「図形」から楕円を描いています。 また、表は3枚複写で、「シート1」「シート2」「シート3」に それぞれ「該当する」「該当しない」の項目があります。 シート1の「該当する」に楕円を入れる場合、残りのシート2、シート3も「該当する」に楕円が必要になります。 シート1の「該当しない」に楕円を入れる場合、残りのシート2、シート3も「該当しない」に楕円が必要になります。 現在は、シート1、シート2,シート3の「該当する」「該当しない」両方にとりあえず楕円を入れています。 そして、「該当する」に楕円が必要な場合、シート1,シート2、シート3の「該当しない」の楕円を削除。 「該当しない」に楕円が必要な場合、シート1、シート2、シート3の「該当する」の楕円を削除――というふうにしています。 それ以外の、たとえば、「住所」や「名前」といった入力欄には、シート1に入力したら、シート2、シート3にもおなじ内容が入力されるようにリンクしています。 なので、今回の「該当する」「該当しない」の楕円の箇所の理想の状態は、最初は「該当する」「該当しない」どちらにも楕円が表示されていない状態で、「該当する」「該当しない」どちらかをクリック、もしくはダブルクリックすると、そこに楕円が表示されて、残りのシート2,シート3にも楕円が表示される――です。 このような動作をエクセルのVBAで可能でしょうか? 上記のような表で楕円を入れる場合、どのようにつくったら一番理想的なのか、皆様のお知恵をお借りしたいです。 どうか、よろしくお願いいたします。

  • エクセルVBA チェックボックスについて

    VBA初心者です。 あるシート(セル)に作った入力用チェックボックスにチェック(TRUE)を入れたときに、別シートの特定の位置に楕円を引きたいのですが、どのようなやり方があるでしょうか。 使い方は入力用シートと印刷用シートを分けて、入力用シートのチェックボックスの状態で印刷用シートの特定のセルに選択したことがわかるように楕円をつけたいというものです。 よろしくお願いします。

  • エクセル VBA

    .Formulaにてセルに他ブック参照した数式を入力しているのですが、参照シート名が半角数字又は全角数字の場合があり、「シートの選択」ウインドウが表示されてしまいます。 数式はIFを使用してシート名が全角・半角どちらの場合でも問題ない数式を入力してるので、「シートの選択」をしなくても問題ありません。 DisplayAlertsをFalseにしても表示されてしまいます。 「シートの選択」ウィンドウを表示させない、又はOKまたはキャンセルをVBAで押すことはできないでしょうか?

  • フォトショップでの楕円形選択

    フォトショップで楕円形選択ツールで人物の画像の一部を切り抜きたいのですが、+マークが出て斜めにドラッグするとその移動の大きさに合わせて楕円の範囲選択されますが、何枚もの画像から切り抜こうとする時、ビミョウにその大きさ、形がずれてしまいます。 楕円選択を同じ楕円の大きさ、形で何度も選択するにはどのようにすればよいのでしょうか? どなたか教えてください。

  • vba シートの選択後列の選択

    VBA初心者中の初心者です。 vbaでシート全体を選択後、全シート共通でI列全体を選択したいのですが、 Worksheets.Select Columns("i:i").Select と書くと、なぜかB列からI列全体が選択されてしまいます。 I列だけ(全シート共通)を選択したいのですが、どのようにすればよいのでしょうか? よろしくお願いいたします。

  • VBA 特定のシートが選択されていたら、セル入力

    Excel365。簡略化したVBAです。 現在、「あ」というシートが選択されていたら、「あ」シートの「A1」セルに「a」と入力 「い」というシートが選択されていたら「い」シートの「A1」セルに「i」と入力。 それ以外のシートが選択されていたら、何もしない。 If Sheets("あ").Activate Then Range("A1") = "a" ElseIf Sheets("い").Activate Then Range("A1") = "i" Else 以下省略 「い」シート選択中でも、「あ」シートの「a1」セルに入力され、シートを増やしても、「あ」シートの「a1」セルに入力されます。 「い」シートを入力していません。 簡単だと思っていたのですが…。 どんなコードになるのでしょうか?

  • Excel VBAでn行毎に行の選択

    Excel VBAでn行毎に行の選択 こんにちわ。 初めて質問をさせて頂きます。 今回ExcelのVBAを使ってあるシートを作成することになったのですが その過程で分からず、詰まっております。 色々調べてみたもののVBAの知識が浅いせいか 該当する様なものは見つかりませんでした。 実行したいのはタイトルの通りです。 例として10行毎に1行ずつ選択したい場合は下記の通りです。 A列 10行目←選択 ・ ・ 20行目←選択 ・ ・ 30行目←選択 ・ ・ 40行目←選択 実際にやりたいことは行を選択後に入力規則を入れたいだけなのですが 5000行近くあるので、一つ一つコードを書く場合 Range("A10,A20,A30,A40・・・").EntireRow.Select 結構な量になります・・・。 VBAなら他にもっと効率いいことができるのでは、と 自分なりに探してはいますが、どうしても見つからないので 皆様のお知恵をお借りしたいです。 よろしくお願いします。

  • エクセル この場合のVBAの書き方教えてください。

    顧客情報がsheet2にデータベース化されていて、そのシートのR列に管理上、属性によって顧客を分類する番号が1から8までそれぞれ入力されています。 教えていただきたいのは、シート1上でその分類の数字を入力すれば、別シート、例えばsheet3にそれに該当する顧客だけをsheet2と同じ書式で自動でコピーしてくれるマクロを作りたいのですが、詳しい方いましたらご面倒でしょうがVBAのコードをそのままコピーできるように書いていただけないでしょうか? 情報が不足でしたら補足させていただきますので宜しくお願いします。

  • Excel VBA 選択方法を教えてください。

    Excel2002でリスト作成してデータを入力します。A列の最下行を選択して、例えば(A12)から、(H2)まで選択したいのですが、VBAでどのように記述したらよいのでしょうか。 Range("A65536").End(xlUp).Offset(0).Select を使用したVBAを使用したいと思っています。 この選択範囲をコピーして、異なったシートに貼り付けたいのですが、 下から選択して、貼り付けた場合、何か注意することはありますでしょうか。 宜しくお願い致します。 それと、値のみをクリアにして、計算式を残した削除方法ってVBAであるのでしょうか。 あわせて宜しくお願い致します。

  • Excel VBA によるハイパーリンクセル挿入

    よろしくお願い致します。 Excelで写真データの管理出来るシートを作成しようとしています。 基本項目として、5項目+今回のハイパーリンクパスです。 1データ横一行に入力を行い、必要条件に応じシートから抽出し行末のハイパーリンクをクリックし写真を確認出来る様な事を想定しています。 ネットにて調べたのですが、ハイパーリンクを入力したいセルを選択後マクロボタンを押し「msoFileDialogFilePicker」を使用して該当ファイルを選択した物のハイパーリンクパスをセルに納める様に出来ればと思っています。当ファイルの使用は私以外の者が使用する為、上記VBAのFileDialogのインターフェースを使いたいと思っています。 何分当方VBA初心者の為、皆様のお力を頂きたくよろしくお願い致します。

専門家に質問してみよう