• ベストアンサー

Excelで○をクリックのみでつけたい

わたしの職場では給食(昼、夜)を食べたら○をつけるという表があります。これを一ヶ月後にExcelできれいにまとめ、集計するのですが・・・ 約30人分の○をつけるのは非常に大変なんです!!! そこで教えてgooで調べた結果こんないい回答を見つけました。 >>こんなマクロはいかがですか ・b列で空白のセルをクリックしたら青○を表示(手入力の○と区別) ・b列の青○を再度クリックしたら空白に戻る ・それ以外の文字、及び青色以外の○が入ったセルでは何もしない ・b列の単一セルをクリックしたときだけ動作する まずは、そのアンケートのシートマクロに以下をペーストして動かしてみて下さい。b列以外で使用したいなら3行目のidxCOLの値を変更して下さい Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim idxcol As Long idxcol = 2 'b列なら2,a列から始まる列の順番 With Target If .Column = idxcol And .Rows.Count = 1 Then If .Value = "" Then .Value = "○" .Font.ColorIndex = 5 Else If .Value = "○" And .Font.ColorIndex = 5 Then .Value = "" End If .Font.ColorIndex = 0 End If End If End With End Sub しかし、わたしは”列”ではなく”行”に○を入れたいのです。どうすればよいでしょうか? さらに表示される色が青でなく黒に設定できるようならそれも教えてください。

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

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

#2です ちょっと考えてみました。 同時にというのではなく 行を指定できます。 以下のマクロでは A1に 入力した数字 を読み取って その行で クリックしたセルに丸を入れます。 ついでに ○の位置をセンターにしています。 マクロの A1の部分を そちらの表の都合のいいセルに変更してください。 また このときに このセルは 罫線でかこむとか セルに色をつけるとかして分かりやすくしておいたらどうでしょうか? -------------------------------------- Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim idxrow As Long idxrow = Range("A1") 'この A1の部分を適宜変更してください With Target If .Row = idxrow And .Columns.Count = 1 Then If .Value = "" Then .Value = "○" .Font.ColorIndex = 1 With Selection 'ここからは文字位置を中央にするためです .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter End With '必要なければここまでを消してください。 Else If .Value = "○" And .Font.ColorIndex = 1 Then .Value = "" End If .Font.ColorIndex = 0 End If End If End With End Sub

ckitagawa
質問者

お礼

試してみましたが、これはいいですね。 早速仕事で活用させていただきます。すごいですね。 ありがとうございました。

その他の回答 (2)

回答No.2

回答しようと思ったときには 他の方が答えられていたので ちょっとだけ 訂正というか 追加を… Font.ColorIndex = 5 の部分の 5 を 1に書き変えれば 文字の色が黒になります。 2か所とも書き換えてください。 複数の行を同時にというのは このままでは無理だと私は思いますが… 少し時間があれば考えられるかもしれません。

ckitagawa
質問者

お礼

なるほど! ここですね。 ありがとうございました。

回答No.1

2行目に「○」するってことでよければ 以下のソースをお試しください Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim idxrow As Long idxrow = 2 '2行目 With Target If .Row = idxrow And .Columns.Count = 1 Then If .Value = "" Then .Value = "○" .Font.ColorIndex = 5 Else If .Value = "○" And .Font.ColorIndex = 5 Then .Value = "" End If .Font.ColorIndex = 0 End If End If End With End Sub

ckitagawa
質問者

お礼

ありがとうございます。 こういう言語(何といえばよいのかわからないので、とりあえず…)はわからず、ただコピーして使わせてもらっていましたが、Excelが自分の思っているとおりに動いてくれるのをみて、ちょっとこの言語について勉強してみたくなりました。

ckitagawa
質問者

補足

2行目だけでなく、何行も同時にすることは可能ですか?

関連するQ&A