Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
  • ベストアンサー

エクセルなんですが・・・

Private Sub CheckBox1_Click()   If CheckBox1 Then   Range("B5:F5").Interior.ColorIndex = 3   Else   Range("B5:F5").Interior.ColorIndex = xlNone   End If End Sub Private Sub CheckBox2_Click()   If CheckBox2 Then   Range("B6:F6").Interior.ColorIndex = 3   Else   Range("B6:F6").Interior.ColorIndex = xlNone   End If End Sub   度々の質問ですみません。上記のように設定するとチェックボックス1をチェックすると、B5~F5まで赤くなります。2をチェックするとB6~F6まで赤くなります。このような設定でチェックボックスを100まで作りたいのです。当然、チェックボックス3には、B7~F7までが、4にはB8~F8まで赤くなるように・・・と自動で  CheckBox2 &("B6:F6").←この部分を変えるにはどのようにしたら良いのでしょう?  あと、もう一つなんですが、エクセルで作成した表を共通ファイルに入れて、オリジナルは自分のデスクトップに置き、デスクトップのデータを変更したときに、リアルタイムで共通フォルダの表も、変更が反映されるにはどうしたら良いのでしょうか?  表現が良く伝わらなかったらごめんなさい。  どうか宜しくお願いします。

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

  • ベストアンサー
  • WWolf
  • ベストアンサー率26% (51/192)
回答No.1

イベントをロジックで作るのは多分不可能だと思うので。 このロジックをテキストと考え、VBAで sub test() for i=1 to 100 a="Private Sub CheckBox" & i & "_Click()" b="  If CheckBox" & i & " Then"     ・           ・           ・ と少し途中ひねならないといけませんが・・・

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.2

1.新規ブックのどこかに下のマクロをコピー Sub test() For r = 1 To 100 rs = Right(Str(r), Len(Str(r)) - 1) Cells(r * 8 - 7, 1) = "Private Sub CheckBox" & rs & "_Click()" Cells(r * 8 - 6, 1) = " If CheckBox" & rs & " Then" Cells(r * 8 - 5, 1) = "Range(cells(" & rs + 4 & ",2),cells(" & rs + 4 & ",6)).Interior.ColorIndex = 3" Cells(r * 8 - 4, 1) = "Else" Cells(r * 8 - 3, 1) = "Range(cells(" & rs + 4 & ",2),cells(" & rs + 4 & ",6)).Interior.ColorIndex = xlnone" Cells(r * 8 - 2, 1) = "End If" Cells(r * 8 - 1, 1) = "End Sub" Cells(r * 8, 1) = "" Next r End Sub 2.マクロ実行する。 3.ワークシートのA列にご希望のマクロと同じ文字が出てくる。 4.あとはA列まとめてコピーして適切な場所に貼りつけて下さい。 5.先にチェックボックスを作った時は自動的作成される Private sub ~ End Sub は予め消しておいてください。 だいぶ裏技的ですが,一応実験済みですので大丈夫だと思います。

screams
質問者

補足

コンパイルエラーって出てしまったんですけど・・・。

すると、全ての回答が全文表示されます。

関連するQ&A