家・車以外で、人生で一番奮発した買い物

エクセルでチェックシートを作っています
チェックボックスの作成方法等は分かります。
ただ大量のものをプロパティ編集・・・となると効率の良い方法がわかりません。

【理想】文字の書いてあるセルをクリックするとセルの色が変わる
【現実】やり方がわからないので、わかるチェックボックスで行う
【悩み】大量なので時間がかかる
・チェックシートは16種類
・各チェックシートのチェック項目は100~150項目
・一度すべて作ってしまえば編集はしない、作成作業は1度きり

お知恵を拝借したいです
宜しくお願いします

A 回答 (5件)

#2の回答者です。



自己解決していくつもりでしたら、余計なことになりますが、少しちょっとしたヒントを書いておきます。

1. ThisWorkbook でのイベントは、ブックにひとつで足ります。
 さらに、エクセル全体で当てはめるためには、アドインにするとよいです。
 またさらに、新規のブックに当てはめる時は、アドインにクラスからインスタンスを設けるとよいです。

2. 共通型のイベント型マクロ(ThisWorkbookモジュールを使う)を使う場合は。
>共通するキーワードがあれば、良いです
> キーワードは近いものはありません

「チェックシートは16種類」とは、16シートと考えたからです。
なるべく作業手順を経ランスことが目的だったと思います。
私が聞いた趣旨がお分かりならなかったかもしれませんが、統一したイベント型マクロにする時には、してほしくない、または不要なシートがありえます。その場合は、それを除外する意味です。特定のシート以外は全部、マクロが起動するということも可能です。

3.イベント型マクロが起動してほしい列や行と、そうでないところ。
本来は、シートの中でも、イベント型マクロが起動してほしい所と、そうでないところが別れるはずです。そうした除外条件をご自身でつけられるつもりなら、それは良いのですが、そうでない場合、ややこしい状態に陥ることがあります。

なお、
>これはセルの色のみならず罫線や文字にも流用できるのでしょうか?
可能性はあっても、現状の質問からは、具体的な内容でない限りは、何をしたいのか分かりません。

文字とか罫線とか具体的にどうするとか、もう少し詳しい説明がほしいところです。罫線とは枠囲みするのでしょうか、下線をつけることも考えられます。文字とは、特定の文字を入れることや、文字に対して色を塗る、フォントの色を替えることもありえます。選択肢はいくつもあります。
    • good
    • 0

前回回答を修正


セルの色のみならず罫線や文字にも流用できると思います。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target <> "" Then
Select Case Target.Column
Case 1
If Target.Interior.ColorIndex = xlNone Then
Target.Interior.ColorIndex = 6
ElseIf Target.Interior.ColorIndex <> xlNone Then
Target.Interior.ColorIndex = xlNone
End If
Case 2
If Target.Font.ColorIndex = xlAutomatic Then
Target.Font.ColorIndex = 3
ElseIf Target.Font.ColorIndex <> xlAutomatic Then
Target.Font.ColorIndex = xlAutomatic
End If
Case 3
If Target.Borders(xlEdgeTop).LineStyle = xlNone Then
Target.Borders(xlEdgeLeft).ThemeColor = 5
Target.Borders(xlEdgeLeft).Weight = xlThick
Target.Borders(xlEdgeTop).ThemeColor = 5
Target.Borders(xlEdgeTop).Weight = xlThick
Target.Borders(xlEdgeRight).ThemeColor = 5
Target.Borders(xlEdgeRight).Weight = xlThick
Target.Borders(xlEdgeBottom).ThemeColor = 5
Target.Borders(xlEdgeBottom).Weight = xlThick
ElseIf Target.Borders(xlEdgeTop).LineStyle <> xlNone Then
'罫線を消す条件と、罫線を消す位置については考慮の必要がある
Target.Borders(xlEdgeTop).LineStyle = xlNone
Target.Borders(xlEdgeLeft).LineStyle = xlNone
Target.Borders(xlEdgeBottom).LineStyle = xlNone
Target.Borders(xlEdgeRight).LineStyle = xlNone
End If
End Select
End If
Cancel = True
End Sub
「エクセルでチェックシート(項目大量)」の回答画像4
    • good
    • 0

VBAを使ってもいいのでしたら、


そのチェックシートがSheet1に作成されているとして
Sheet1のモジュールに次のコードを入れます。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range)
If Target <> "" Then
If Target.Interior.ColorIndex = xlNone Then
Target.Interior.ColorIndex = 6
ElseIf Target.Interior.ColorIndex <> xlNone Then
Target.Interior.ColorIndex = xlNone
End If
End If
End Sub

Target.Interior.ColorIndex = 6 は そのセルの内部を黄色にします。
http://www.relief.jp/docs/000482.html

その作ったファイルを保存するときには、マクロ有効Bookで保存する
(.xlsm)
「エクセルでチェックシート(項目大量)」の回答画像3
    • good
    • 0
この回答へのお礼

画像が非常にわかりやすいです。助かります。
ちなみに、これはセルの色のみならず罫線や文字にも流用できるのでしょうか?
自分でも調べてみます。

お礼日時:2017/05/03 23:18

チェックボックス(ただしフォームコントロールに限る)でも、


クリック(ダブルクリック)するのでも、マクロからすれば、何百でも、何千でもほぼ同じです。(本物のワンクリック・マクロはとても難しいです)

・チェックシートは16種類 --共通するキーワードがあれば、良いです
・各チェックシートのチェック項目は100~150項目-- 数自体は問題ありません。

・一度すべて作ってしまえば編集はしない、作成作業は1度きり--マクロは、アドインのオブジェクトにしたほうがよいのですが、それはつくるまでに手間が掛かります。今回は、該当するブックに備え付けるタイプにしました。

手間は、ダブルクリックイベントのほうが楽です、
これは仮に作ったものですが、ALT+ F11 または、開発-コード-Visual Basic で、VBEditor 画面を開けたら、プロジェクト・エクスプローラ(Ctrl+ R)から
ThisWorkbookの文字をダブルクリックで開けて、以下のコードを貼り付けます。

ほんの一例です。

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
 If Sh.Name Like "Sh*" Then  'シートの名前が、Sh であること
  If Target.Value <> "" Then  '空のセルでないこと
   If Target.Column = 2 Then 'B列 ダブルクリックは、2列め
    If Target.Interior.ColorIndex < 0 Then 色がついていないなら、
     Target.Interior.ColorIndex = 34  '色をつける(パステルの水色)
    Else
     Target.Interior.ColorIndex = xlColorIndexAutomatic '色があるなら消す
    End If
   End If
  End If
  End If
  Cancel = True  'ダブルクリックのセルの待機状態を戻す
 End Sub

ちなみに、
> 一つずつ右クリック、プロパティとするのが大変で………

フォームコントロールのチェックボックスには、鯛焼きの型とおなじように、ひとつの型から同じものは何百・何千とつくることは可能です。つまり、一つ設定すれば、全部同じものができますが、このボタンは、ユーザーがうっかり移動できてしまうのが問題点です。
    • good
    • 0
この回答へのお礼

これは便利ですね!
あくまで印刷時に判別できれば良いので、この方法は最適解に近いです。
ちなみに
>・チェックシートは16種類 --共通するキーワードがあれば、良いです
キーワードは近いものはありません

参考にします
ありがとうございます

お礼日時:2017/05/03 23:16

チェックシートを利用する人の入力の手間を省くか、


チェックシートを作る人の手間を省くか。
比較検討してみましょう。

チェックボックスが100個200個程度なら時間かければいい話です。
1つ作ったらそれを修正して使いまわせばいい。
    • good
    • 0
この回答へのお礼

利用者の手間を省くためです
年間8000〜9000回使用、4〜5年間は使いまわせるため作成を試みています。

チェックボックスはフィルのように連動はできないですよね?
一つずつ右クリック、プロパティとするのが大変で………

お礼日時:2017/05/03 22:28

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


おすすめ情報