[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『シートにn個配置したCheckBoxのRowアドレス取得について』(まき)
エクセル:2003、OS:Vista
いつも色々参考にしております。
今回シートのA9以降An欄ま(開くシートにより異なる)でCheckBoxを配置し、Ture時の行
に配置したファイル名の処理(印刷等)を行いたいと考えております。そこで、過去のhttps://www.excel.studio-kazu.jp/kw/20070228103207.html
を参考にしてクラスターモジュールに下記の通りVBAを明記しましたが、L欄にRowアドレ
スが書かれませんでした。
Option Explicit Sub chk()
Dim obj As OLEObject Dim i As Long i = 0 For Each obj In Worksheets(1).OLEObjects If TypeOf obj.Object Is MSForms.CheckBox Then If obj.Object.Value = True Then Range("L9").Offset(i).Value = Range("B9").Offset(i).Row End If End If i = i + 1 Next
End Sub
そこで試しにシートに次のVBAを入れた所Rowアドレスは取得出来たのですが、CheckBoxがn個
有る為に2個目以降Rowアドレスを出す事が出来ません。
Private Sub CheckBox1_Click() Dim n As Long
n = 9
If CheckBox1.Value = True Then Range("L9") = n End If
End Sub
恐れ入りますが、良い方法が有ればご伝授お願い申し上げます。
TopLeftCell BottomRightCell をヘルプで調べてください。 BJ
これ、コントロールツールボックスにあるチェックボックスでもクラスモジュールを使えば、 出来ますが、安定性を考慮すると、コマンドバー「フォーム」にあるチェックボックスを 使ったほうが不具合が少ないと思いますよ!! シートをユーザーに触らせる仕様は、モジュールレベルの変数が初期化されてしまう可能性があるので。 変数が初期化されると、クラスモジュールで生成したオブジェクトも消えてしまうので・・・。
検討してみてください。
ichinose
おはようございます、まきです。
BJ様から言われました「TopLeftCell」と「BottomRightCell」を2003のVba HelpとシートHelpを探して
みましたが、見当たりませんでした?Webで検索した所、画像?を何かする時に使うのかなぁ??
ichinose様から言われ初めて知ったのですが、今までコントロールツールボックスのCheckBoxしか無い
と思っていましたが、フォームにもCheckBoxが有ったのですね。(確かにHelpを読んでいた時に、フォーム
と出て来たのですが、userFormを指していると思い読み飛ばしていました。)現在フォームのCheckBoxを
使い組み直しておりますが、レ点を入れた際にリンク先セルにTRUEしか入れられないのでしょうか?出来
ればアクセスの様に-1とかになりませんか?(後で同列を置換すればいいのですが。。。。)
以上よろしくお願いします。
>「TopLeftCell」と「BottomRightCell」を2003のVba HelpとシートHelpを探して >みましたが、見当たりませんでした? 2002だと、VBEのヘルプの質問欄に「TopLeftCell」を貼り付けてから検索で、 「TopLeftCell プロパティ」 と、出るんですけどね。
MsgBox Worksheets("Sheet1").OLEObjects("CheckBox1").TopLeftCell.Address
For Each obj In Worksheets(1).OLEObjects If TypeOf obj.Object Is MSForms.CheckBox Then If obj.Object.Value = True Then MsgBox obj.TopLeftCell.Row End If End If i = i + 1 Next BJ
今晩は、まきです。
素人なので教えて下さい。BJ様のVBAを新規のBOOKのSheet1にCheckBox1を作り、クラスモジュールや標準
モジュールやSheet1に入れてみましたが、コンパイルエラー:プロシージャの外では無効です。と出て来ます。
どうしてなのでしょうか?ちなみに、2003のHelp検索部をupしてみました。まさか2003ではサポート外
なのでしょうか?
以上よろしくお願いします。
>レ点を入れた際にリンク先セルにTRUEしか入れられないのでしょうか? 仕様ですからねえ・・・。
>出来ればアクセスの様に-1とかになりませんか? どうしてTrue/Falseだと駄目なんですか?何か厄介なことでもありますか? Trueだって、1と掛け算すれば、ほらこのとおりですから、
sub test() Range("a1").Value = True MsgBox "ok" MsgBox Range("a1").Value * 1 end Sub
そんなに嫌わなくても・・・。
ichinose
おはようございます、まきです。
数値で出したかったのでは、設置したn個設置したCheckBox(A列)の中から順番にファイル(C列にあるフォ
ルダーのリストを表示しており)名をを開き、次の処理に進む際に何個開けば良いのかとの判断材料にす
る為に数値で欲しかったのです。しかし、指定するフォルダーによりファイル数が違いますので、最終行を
見つけ出しoffsetでSUMを張る予定にしています。その際に、Ture時に1へ置換するマクロを1命令追加しま
す。この度は有り難うございました。また何かあった際には、ご指導お願いします。(営業職なのでVBA
は、仕事の合間に行っていますので、分からない事がいっぱいあります。)
BJ 様にも感謝しております。
以上よろしくお願いします。
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.