ここから本文です

EXCEL2007のクラスモジュールについての質問です。

quo********さん

2012/5/2816:35:03

EXCEL2007のクラスモジュールについての質問です。

シート上のチェックボックスのチェックが見えにくいので□と■のように、白黒反転で判別するように書類を作ってと頼まれました。
ActiveXのラベルを使い、プロパティのBorderStyleを1-fmBorderStyleSingleに変更してCaptionを空白にし、シートモジュールに下記のプログラムを書いて思っていた動作を得ることが出来たのですが。

Private Sub Label1_Click()

Select Case Label1.BackColor
Case vbWhite
Label1.BackColor = vbBlack
Case Else
Label1.BackColor = vbWhite
End Select

End Sub

このラベルを今のところ135個使っています。
工事写真台帳にも使っているので、写真の枚数が増えれば元の様式をコピーして増やすことになり、ラベルも増えることになります。
どのくらい増えるのかは撮ってきた写真の枚数次第なので分からない状態です。
上記のLabel1をLabel2、Label3、・・・・・・と増やしていけばいいのでしょうが恐ろしく長くなります。
疑似配列やクラスモジュールやOLEObjectなど、1ヶ月程合間を見て勉強しましたが、どうしても分かりません。
本当は基礎の基礎から勉強すべきなのでしょうが、仕事上時間切れが来ております。
どうか御教示下さるようよろしくお願いします。

閲覧数:
400
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

som********さん

2012/5/2908:49:32

□と■の切り替えなら、ダブルクリックするたびにセルそのものの塗りつぶしを白にしたり黒にしたりすれば簡単でしょうか。

ワークシートをダブルクリックしたときに発生する、Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)にコードを作ってしまいます。

コードそのものは、次のように考えればいいでしょう。
①Targetには、どのセルがダブルクリックされたかが入っていて、そのセルが□と■の切り替えセルかどうかを判定します。対象外のセルであれば、Cancel=falseにして終了します。
②対象のセルであれば、□ならば■に、■ならば□に塗りつぶす処理を行い、Cancel=Trueにして処理を終了します。

このような作りにしたほうが、簡単かつ軽いでしょう。

ActiveXコントロールは本来フォームに貼り付けて使うべきもので、シート上に直接貼り付けて使うと、ブックが重くなり、時々落ちます!

質問した人からのコメント

2012/6/4 14:07:15

成功 会社で思わず「ああっ!!」と叫びました。
そうですよね、クラスモジュールにはまりこんで、それ以外の方法を全く考慮していませんでした。
しかも重いんです、PCが古いだけに負担も悩みの種だったんです。
両方解決できました、ありがとうございました。
siogetusiさんもありがとうございます、クラスモジュールは本気で勉強したいので、とても参考になるサイトを教えていただき感謝致します。

ベストアンサー以外の回答

1〜1件/1件中

sio********さん

2012/5/2911:25:22

これまで、いろいろなExcelVBAの本を見てきましたが、クラスモジュールになるとふれて終わる程度のものしかないようです。
大村あつし氏の「ExcelユーザーのためのVBAプログラミング入門」というのが唯一、VBのコントロールとの比較から始まって、コントロールのクラスモジュール化といった話があったような記憶がありますが、今では古本としてしか手に入らないので、個人的に残念に思っているところです。
ただWEB上では、次のようなサイトがあります。コントロールまで行けるかどうかはわかりませんが、わかりやすく説明されています。
http://www.excellenceweb.net/vba/class/

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる