
Sheet1が個人のアンケ―トのデータ
Sheet2はそのアンケート結果を〇印を描いたものです
例えばアンケート1に対し「満足」と記入いただいた場合、Sheet2のアンケ―ト1の満足の欄に〇印をつけます。sheet2の「満足」B列 「普通」C列 「不満足」D列 です。
アンケート内容の部分は列が統一されていますが、性別は違う列となります。
添付の場合はsheet2のA2セル、B7セル、D9セルに〇印をつけたいのですがうまくいかずどこを直せばよいかどうしてもわかりません。下記記述を見ていただき修正願えませんでしょうか。(知的素養が不足しているため記述の仕方も野暮ったいと思いま)。
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set ws1 = Worksheets("sheet1")
Set ws2 = Worksheets("sheet2")
If Range("B6") = "満足" Then
ws2.Activate
Range("B7").Select
ws1.Activate
ElseIf Range("B6") = "普通" Then
ws2.Activate
Range("C7").Select
ws1.Activate
ElseIf Range("B6") = "不満" Then
ws2.Activate
Range("D7").Select
End If
Dim r As Range, s As Shape
Dim wh As Double
For Each r In Selection
If r.Address = r.MergeArea(1).Address Then
Set r = r.MergeArea
wh = WorksheetFunction.Min(r.Width, r.Height)
Set s = ws2.Shapes.AddShape(msoShapeOval, r.Left, r.Top, wh, wh)
s.Left = r.Left + (r.Width - s.Width) / 2
s.Top = r.Top + (r.Height - s.Height) / 2
s.Fill.Visible = msoFalse
s.IncrementLeft 0
s.IncrementTop 0
With s.Line
.Visible = msoTrue
.ForeColor.RGB = RGB(0, 0, 0)
.Transparency = 0
.Weight = 1.5
End With
End If
Next
If Range("B8") = "満足" Then
ws2.Activate
Range("B9").Select
ws1.Activate
ElseIf Range("B8") = "普通" Then
ws2.Activate
Range("C9").Select
ws1.Activate
ElseIf Range("B8") = "不満" Then
ws2.Activate
Range("D9").Select
End If
For Each r In Selection
If r.Address = r.MergeArea(1).Address Then
Set r = r.MergeArea
wh = WorksheetFunction.Min(r.Width, r.Height)
Set s = ws2.Shapes.AddShape(msoShapeOval, r.Left, r.Top, wh, wh)
s.Left = r.Left + (r.Width - s.Width) / 2
s.Top = r.Top + (r.Height - s.Height) / 2
s.Fill.Visible = msoFalse
s.IncrementLeft 0
s.IncrementTop 0
With s.Line
.Visible = msoTrue
.ForeColor.RGB = RGB(0, 0, 0)
.Transparency = 0
.Weight = 1.5
End With
End If
Next
ws1.Activate
If Range("A2 ") = "男" Then
ws2.Activate
Range("A2").Select
ws1.Activate
ElseIf Range("A2") = "女" Then
ws2.Activate
Range("A3").Select
End If
For Each r In Selection
If r.Address = r.MergeArea(1).Address Then
Set r = r.MergeArea
wh = WorksheetFunction.Min(r.Width, r.Height)
Set s = ws2.Shapes.AddShape(msoShapeOval, r.Left, r.Top, wh, wh)
s.Left = r.Left + (r.Width - s.Width) / 2
s.Top = r.Top + (r.Height - s.Height) / 2
s.Fill.Visible = msoFalse
s.IncrementLeft 0
s.IncrementTop 0
With s.Line
.Visible = msoTrue
.ForeColor.RGB = RGB(0, 0, 0)
.Transparency = 0
.Weight = 1.5
End With
End If
Next
Application.ScreenUpdating = True
End Sub

No.2ベストアンサー
- 回答日時:
こんにちは
Sheet2に図形で丸をつけたいってことだと思いますけれど・・
なぜ、図形なんでしょうね?
文字の「○」等で良ければ簡単に関数で対応可能ですし、その後集計などをする際にも、図形の丸では処理が面倒になるだけと思いますが。
視認性が良くなってるかと考えてみても、Sheet1のままと変わらないように思います。
また、結合セルがなぜあるのかも不明ですけれど・・
>sheet2のA2セル、B7セル、D9セルに〇印をつけたい
画像が良く読めないけれど、なんとなく、Sheet1は「男」、「満足」、「満足」のように見えますけれど、その結果がA2、B7、D9になる理屈がわかりません。
「B9」ならば理解できますけれど・・・
ですので、勝手に「A2、B7、B9」になるものと解釈して、以下一例です。
(シート名やセル位置等は決め打ちにしてあります)
似た様な処理の繰り返しなので、少しだけ一般化して再利用すれば、コンパクトにできると思います。
※ Sampleの方を実行してください。
※ 既にSheet2に〇印等があっても、追加するだけの処理になっています。
(繰り返し実行すると、同じ位置に〇が追加されます)
※ 画像がよく見えないので、セル位置などがずれているかも知れませんが悪しからず。
※ 丸の付け方はご提示のコードにならっていますが、セルサイズ依存なので不揃いになり、これも変ではないかとは思いますが・・・
Sub Sample()
chekAndMaru "A2", "男,女", "A2:A3"
chekAndMaru "B6", "満足,普通,不満", "B7:D7"
chekAndMaru "B8", "満足,普通,不満", "B9:D9"
End Sub
Sub chekAndMaru(s1, s2, s3)
Dim s, i As Long, v As String
Dim c As Range, r As Double
v = Worksheets("Sheet1").Range(s1).Text
s = Split(s2, ",")
For i = 0 To UBound(s)
If s(i) = v Then
Set c = Worksheets("Sheet2").Range(s3)(i + 1).MergeArea
r = Application.Min(c.Width, c.Height) - 1.5
With Worksheets("Sheet2").Shapes.AddShape(msoShapeOval, _
c.Left + (c.Width - r) / 2, c.Top + (c.Height - r) / 2, r, r)
.Fill.Visible = False
.Line.Visible = True
.Line.ForeColor.RGB = RGB(0, 0, 0)
.Line.Transparency = 0
.Line.Weight = 1.5
End With
Exit Sub
End If
Next i
End Sub
ありがとうございます。思った通りに〇印をつけることができました。
小職が添付した表が間違っており実際は、「満足」「普通」「不満足」の文字が入っておりそれを消せないため〇印を描く表になっておりました。
内容の理解に時間がかかるますが内容把握できるよう調べてみます。
お世話になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
複数セルに〇印をつけるマクロ
Visual Basic(VBA)
-
マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」
Visual Basic(VBA)
-
顧客ごとに違う点検案内を作成するマクロ
Visual Basic(VBA)
-
4
重複データをまとめて合計を合算する
Visual Basic(VBA)
-
5
VBAリストボックスで選択した後
Visual Basic(VBA)
-
6
合計額がゼロになってしまう
Excel(エクセル)
-
7
日付を重複させずに数えたい
Visual Basic(VBA)
-
8
エクセルで作業ごとの時間をグラフ化し、勤務時間より超過している作業の割り出しをしたいのです
Excel(エクセル)
-
9
シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor
Visual Basic(VBA)
-
10
セルが空白だった時の処理
Visual Basic(VBA)
-
11
CODE関数のvbaバージョンか方法はありますか?
Visual Basic(VBA)
-
12
マクロのコードを、少しでも削って短くしたい
Excel(エクセル)
-
13
エクセルシートのPDFでの保存
Excel(エクセル)
-
14
B列の最終行までA列をオートフィル
Visual Basic(VBA)
-
15
指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける
Visual Basic(VBA)
-
16
見えているセルの数字だけの合計を計算させたい
Excel(エクセル)
-
17
ExcelのVBAでシフト表を作っていますが、バグが出て困っています
Visual Basic(VBA)
-
18
エクセルのデータの抽出について
Excel(エクセル)
-
19
Excel入力 英数字 末尾1つづ増やす
その他(Microsoft Office)
-
20
該当セルの値を別ブックのシート名と一緒であればコピーしてほしい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
特定のセルが空白だったら、そ...
-
5
【Excel VBA】指定行以降をクリ...
-
6
EXCELで変数をペーストしたい
-
7
セル色なしの行一括削除
-
8
EXCELのVBA-フィルタ抽出後の...
-
9
Excel VBA、 別ブックの最終行...
-
10
セルの結果でマクロ実行
-
11
【VBA】指定したセルと同じ値で...
-
12
if関数とifs関数は組み合わせる...
-
13
screenupdatingが機能しなくて...
-
14
VBAでセルに値が入ったときにイ...
-
15
VBAマクロで結合セルを含む列に...
-
16
VLOOKUP関数で別ファイルを指定...
-
17
”戻り値”が変化したときに、マ...
-
18
Excel vbaで特定の文字以外が入...
-
19
B列に特定の文字列が入っている...
-
20
【EXCEL VBA】Range("A:A").Fi...
おすすめ情報
公式facebook
公式twitter