プロが教えるわが家の防犯対策術!

エクセルについての質問です
過去の質問の、「セルをクリックして、そのセルに入力された文字を〇で囲む」というものと似ています!

ある項目に対し1.2.3.4.5 の5段階の評価をつけたく、評価が3ならば3(のセル)をクリックすると「3」に赤の丸印がつくように設定したいです。

評価項目がいくつもあるので、クリックして丸がつけられたら便利なのですが、図形の赤丸をひとつずつ置いていくしかないのでしょか…。 詳しい方、よろしければご回答お願い致します!

A 回答 (7件)

こんにちは、


>評価が3ならば3(のセル)をクリックすると「3」に赤の丸印がつくように設定したいです。
設定、機能で行う事は難しいと思います。(知らないだけかもしれませんが、出来ないと思います)

VBAで処理する方法がありますが、丸を表示する位置など手直しが必要になると思いますので
ある程度知識が無いと難しいかもしれません。
とは言え、ご自身で調べたり、学習、検証を厭わないのであれば、出来ると思います。

以下はVBAでの処理なのでご質問にすぐ和ないかもしれませんし、趣味の範疇なので興味が無ければ読み飛ばしてくださいね。

私の手元で使っているものを少し改造してサンプルを示します。
初めのハードルとして、VBA(マクロ)の導入方法などは、ご自身で調べてくださいね。

丸を付ける作業をする シートモジュールに下記プロシージャをコピペしてみてください。
実行されるセルの範囲 "C2:C10" 変更可能
最初のダブルクリックで赤い丸がフォントサイズ+2で作成されます。
2度目のダブルクリックで表示されている丸を削除します。
>評価が3なら
想定で評価が書いてあるセルは1つ左のセルにしています。
Select Case Target.Offset(, -1).Value 部分を変更する事で評価セルを変更だきます。
Offset(, -1)は1つ左のセルOffset(, 1)は1つ右のセルです。詳しくはOffsetで調べてください。
Wpos = 0.04 などの各数値は変更が必要かもしれません。フォントの種類で変わる可能性があります。

テスト環境
セルの結合は、考慮していません。
セルに1,2,3,4,5と入力されており 高さ巾、共にExcelの自動調整で最適化された状態です。
サンプルコードでの実行結果は、添付図を参照してください。

Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim ht As Double, wd As Double
  Dim Wpos As Double, fsize As Integer
  If Intersect(Target, Range("C2:C10")) Is Nothing Then Exit Sub
  Cancel = True
  On Error GoTo creation
  ActiveSheet.Shapes("_" & Target.Address(0, 0)).Delete
  Exit Sub
creation:
  ht = Target.Height
  wd = Target.Width
  fsize = Target.Font.Size + 2
  Wpos = 0.5 ’該当しない場合中央
  Select Case Target.Offset(, -1).Value
    Case 1
      Wpos = 0.04  ’これらの定数は適当なので変えてみてください。
    Case 2
      Wpos = 0.26
    Case 3
      Wpos = 0.5
    Case 4
      Wpos = 0.74
    Case 5
      Wpos = 0.96
  End Select
   With ActiveSheet.Shapes.AddShape(msoShapeOval, Target.Left, Target.Top, fsize, fsize)
    .Fill.Visible = msoFalse
    .IncrementLeft (wd - fsize) * Wpos
    .IncrementTop (ht - fsize) * 0.4
    .Line.ForeColor.RGB = RGB(255, 0, 0)
    .Name = "_" & Target.Address(0, 0)
  End With
End Sub
「エクセルで、選択した数字(セル)に赤の丸」の回答画像4
    • good
    • 0

こんばんは!



すでに的確な回答が出ていますので、余計なお世話かもしれませんが・・・

↓の画像のような配置になっていて、B~F列に「評価項目」が入っているとします。
シートモジュールにして、B~F列セルを選択してみてください。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 Dim myLeft As Double
 Dim myTop As Double
 Dim myW As Double
 Dim myH As Double
 Dim mySp As Shape

  If Intersect(Target, Range("B:F")) Is Nothing Or Target.Count > 1 Then Exit Sub
   With Target
    If .Value < 1 Or .Value > 5 Then Exit Sub
     For Each mySp In ActiveSheet.Shapes
      If mySp.Top = .Top Then
       mySp.Delete
       Exit For
      End If
     Next mySp

    myLeft = .Left + .Width / 2 - .Height / 2
    myTop = .Top
    myW = .Height
    myH = .Height

    ActiveSheet.Shapes.AddShape(msoShapeOval, myLeft, myTop, myW, myH).Select
     Selection.ShapeRange.Fill.Visible = msoFalse
      With Selection.ShapeRange.Line
       .ForeColor.RGB = RGB(255, 0, 0)
       .Weight = 2
      End With
     .Select
   End With
End Sub

※ B~F列の数値はセルの中央揃えになっている!という前提です。

とりあえずはこの程度で・・・m(_ _)m
「エクセルで、選択した数字(セル)に赤の丸」の回答画像7
    • good
    • 0

#4です 


ぐぅ~
ご質問の解釈をまた間違えてしまったようです。
添付図のようなセル組なのであれば、

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim fsize As Integer
  If Intersect(Target, Range("C2:G10")) Is Nothing Then Exit Sub
  Cancel = True
  On Error GoTo make
  ActiveSheet.Shapes("_" & Target.Address(0, 0)).Delete
  Exit Sub
make:
  fsize = Target.Font.Size + 2
  With ActiveSheet.Shapes.AddShape(msoShapeOval, Target.Left, Target.Top, fsize, fsize)
    .Fill.Visible = msoFalse
    .IncrementLeft (Target.Width - fsize) / 2
    .IncrementTop (Target.Height - fsize) / 2
    .Line.ForeColor.RGB = RGB(255, 0, 0)
    .Name = "_" & Target.Address(0, 0)
    .OnAction = ActiveSheet.CodeName & ".ShapeClick"
  End With
End Sub
Sub ShapeClick()
  ActiveSheet.Shapes(Application.Caller).Delete
End Sub

セルが小さい事を考え、図形のクリックでも図形が消えます。

すみません。
「エクセルで、選択した数字(セル)に赤の丸」の回答画像6
    • good
    • 0

○ではなく、そのセルの色を変える(例えば黄色に塗りつぶす)などにした方が簡単なのですが。


条件付き書式でできるのですが、ご希望ではないですよね。
    • good
    • 0

> 赤の丸印がつくように


赤い「●」「〇」と言う文字を挿入する、と言うことはできません。

> 評価が3ならば3(のセル)をクリックすると
クリックした瞬間(そのセルを選んでいる間)だけ、と言うのであれば、
設定したセル表示にする、と言う事はできますが、それを残すことはできません。
数式バー左端には選択中セル番号が表示されるので、
条件付き書式で下記を設定すれば良いです。
「数式バー左端表示=選択中セル位置」且つ「セルの値=評価値」

一番簡単なのは、
クリックしたら、ではなく、数値を記入したらセル表示を変える、
でしょうか。
    • good
    • 0

>図形の赤丸をひとつずつ置いていくしかないのでしょか…。


そうなります。

あるいは、
 1→①
のように「文字」を変える。

・・・
自分なら「オプション ボタン」を1から5に対応した場所に作る。
これなら、1から5のどれかをクリックすると、最後にクリックしたところにだけマークが付けられることになる。
「エクセルで、選択した数字(セル)に赤の丸」の回答画像2
    • good
    • 0

チェックボックスを使用する手もあります.


https://office-hack.com/excel/checkbox/
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています