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

 先日、質問をさせていただき、それに対して素晴らしいご回答をいただきました。
 今回は、さらに要望をさせていただきたいと考えています。
 以下、(1)最初の質問、(2)それに対するご回答、(3)更なる要望 の順に掲載いたします。

(1)最初の質問
 9人をA、B、Cの3チームに分ける表をエクセルでつくりたいと考えています。
 
 (1)1行目に1人目のデータ。A1列に氏名。
 (2)1人目がAチームなら、B1をクリックすると赤に変わり、かつ「A」とそのセル表示。
 (3)Bチームに変更したければ、C1をクリックすると青に変わり、かつ「B」とそのセルに表示。その際、B1の色を消す。
 (4)Cチームの場合は、D1をクリック、黄色に変わり、かつ「C」と表示。その際、B1もしくはC1の色を消す。
 (5)2人目以降は同様に、2行目以降に表示。それぞれの行が干渉しないようにする。

 なお、以上が1試合目で、2試合目のチーム分けをそれぞれのメンバーの行の、E、F、Gの列を使って、同様に行えるようにできれば完璧なのですが…。

(2)ご回答
 シート名タブを右クリックしてコードの表示を選び,下記をコピー貼り付ける

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 Dim s As Range, c As Integer
 If Target.Column = 1 Then Exit Sub

’位置決め
 Set s = Target.Offset(0, -(Target.Column + 1) Mod 3)
 c = Target.Column Mod 3

’クリア
 s.Resize(1, 3).ClearContents
 s.Resize(1, 3).Interior.ColorIndex = xlNone

’記入
 Target.Interior.Color = Array(vbBlue, vbYellow, vbRed)(c)
 Target.Font.Color = Array(vbWhite, vbBlack, vbWhite)(c)
 Target = Array("B", "C", "A")(c)
 Cancel = True
End Sub

B列以降をWクリックする。

(3)さらに要望
 (1)1試合目はそのままで、2試合目、3試合目のチーム名はA、B、Cではなく、ア、イ、ウとする。(2試合目、3試合目共にア、イ、ウ)
 (2)1試合目はそのままで、2試合目、3試合目は別の色に変える。(Aチームは薄い赤、Bチームは薄い青、Cチームは薄い黄色)→細かな色の違いにはこだわりません。
 (3)4試合目以降は行わない。
 (4)可能ならば、ダブルクリックではなく、クリックでできるようにする。

 つたない文書で申し訳ありません。
 VBAについて全く理解できていませんので、このような質問になりました。
 どうぞよろしくお願いいたします。

A 回答 (1件)

ステップ1)


色つけはマクロではなく,条件付き書式を事前に設定しておきます。

手順:
ご利用のエクセルのバージョンが不明なので,Excel2003の例でお話しします。
BCD列を列選択
書式メニューの条件付き書式を開始
セルの値が 次の値に等しい ="A"
として,書式ボタンでAの色を付ける
追加をクリック
セルの値が 次の値に等しい ="B"
として,書式ボタンでBの色を付ける
追加をクリック
セルの値が 次の値に等しい ="C"
として,書式ボタンでCの色を付ける
でOKします。

E列からJ列を列選択
書式メニューの条件付き書式を開始
セルの値が 次の値に等しい ="ア"
として,書式ボタンでアの色を付ける
追加をクリック
セルの値が 次の値に等しい ="イ"
として,書式ボタンでイの色を付ける
追加をクリック
セルの値が 次の値に等しい ="ウ"
として,書式ボタンでウの色を付ける


#実際には,AはB列にしか入らないのでB列を選んで条件付き書式を設定し,Aに等しいときにAの色を付ける
C列を選んでBに等しいときにBの条件付き書式を付ける
D列を選んでCに等しいときにCの条件付き書式を付ける
以下同文
のように設定してもOKです。

条件付き書式も使ったことが無いときは,下記などを参考にします。
2003までのエクセル:
http://www.geocities.jp/ogino2600x/1411.html
2007以降のエクセル:
http://officetanaka.net/excel/excel2007/027.htm



ステップ2)
ABC(アイウ)の記入をマクロで行います
今までのマクロを必ず消してから,たとえば次のようなマクロに差し替えます

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim s As Range, c As Integer
Dim a1, a2
If Target.Column = 1 Or Target.Column > 10 Then Exit Sub
a1 = Array("B", "C", "A")
a2 = Array("イ", "ウ", "ア")

'位置決め
Set s = Target.Offset(0, -(Target.Column + 1) Mod 3)
c = Target.Column Mod 3

'クリア
s.Resize(1, 3).ClearContents
s.Resize(1, 3).Interior.ColorIndex = xlNone

'記入
Target = IIf(s.Column = 2, a1(c), a2(c))
Cancel = True
End Sub

操作はWクリックで行います。クリックでは行いません。

#出来ないわけではありませんが,クリックでマクロを組むと「セルを選んだ」だけで反応しちゃうので,たとえば矢印キーで次のセルに動いたとか,何かの拍子にそこに選択セルが行っただけで勝手にマクロが発動してしまい,使いにくくてしょーがありません。
    • good
    • 0
この回答へのお礼

詳細なご回答、本当にありがとうございました。
素晴らしいできあがりとなりました。
なお、後日さらに別の要望をさせていただきたいと考えています。
「エクセル クリックで色を変えるには?(3)」として質問することを考えていますので、もしお手数でなければ、またお教えいただければ、本当にうれしく思います。

お礼日時:2011/08/01 17:49

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