No.2ベストアンサー
- 回答日時:
文脈から、もう既に作り終え、回答をもらって今から集計しようとしている状態とお見受けします。
ので、「こう作れば……」的なことには一切触れません。的を外していたらすみません。まず、1050YENさんのおっしゃるとおり、チェックボックス、オプションボタンの作成には2通りの方法があり、それによって値の取得の仕方も異なります。取得の仕方はそれぞれ次のようになります。
●「Sheet1」に「フォーム」ツールバーからチェックボックス「CheckBox1」を作成した場合
Sheets("Sheet1").Shapes("CheckBox1").Selection
で一旦セレクトした後、(Sheets("Sheet1").Shapes("CheckBox1").Valueにするとエラーになります。)
Selection.Value
で値を参照することができます。
オンの場合は数値で 1 を返し、オフの場合は -4146 を返すようです。何故Boolean型ではないのかは分かりませんが……。
●「Sheet1」に「コントロールツールボックス」ツールバーからチェックボックス「CheckBox1」を作成した場合
Sheets("Sheet1").CheckBox1.Value
で値を参照することができます。
値はBoolean型で、オンの場合はTrue、オフの場合はFalseを返します。
なお、ラジオボタンの場合も取得の仕方、返ってくる値は変わりません。
次に、ファイルの開き方はご存知と思いますが、ファイル名を取得するのが少し難しいかも知れません(自分は少し悩んだ経験があります)。Dir関数を用いると、指定したフォルダ以下のファイルを取得できます。
Dir(ThisWorkbook.Path & "\*.xls")
とすれば、現在マクロの入っているファイルと同じフォルダにあるExcelファイルのファイル名が取得できます。
同じ条件に適合する他のファイル名を取得したい場合は
Dir
と引数を無しで呼び出すと次のファイル名が取得できます。もうこれ以上見つからない、というところまできた場合は長さ0の文字列が返されます。
つまり、
Dim FilePath As String
Dim FileName As String
FileName = Dir(ThisWorkbook.Path & "\*.xls")
Do Until FileName = Empty
If FileName <> ThisWorkbook.Name Then
FilePath = ThisWorkbook.Path & "\" & FileName
Workbooks.Open (FilePath)
' ここに集計する処理を書く
End If
FileName = Dir
Loop
こんな感じでどうでしょうか?
Dir関数に関する説明はExcel VBAのヘルプを参照願います。
お役に立てば幸いです。長文、失礼しました。
Godyさん
遅くなりましたが、アドバイスありがとうございました。
こちらの状況を想定いただき、丁寧な回答がとてもうれしかったです。
今回はコントロールツールボックスから作ったのですが、まったく勉強不足のままだったので、手を焼いています。
ファイルを開くプログラムは、ばっちりでした!
しかし、 Sheets("Sheet1").CheckBox1.Value については、どのように使えばよいか、まだ理解できませんでした。
ひとまず解決としますが、引き続き質問をアップしますので、どうぞよろしくお願いします。m(_ _)m
No.1
- 回答日時:
チェックボックス/オプションボタン(総称してシェイプ)
それらの変更値を、配布したブック内のセルに反映する仕込みをして置けば、シェイプから値を読み取らないでも、シートの値を読み取るだけで実現可能です。
っていうか、シェイプの値って、読めるのかなぁ?
チェックボックス/オプションボタンは、二つのツールバーで作成できます。
※1.「フォーム」ツールバー
※2.「コントロールツールボックス」ツールバー
※1を利用しましょう。
なぜかというと、マクロを仕込まずに、そのシェイプの変更値を、ローカルのシートに反映することが出来ます。
※2だとマクロを配布先のブックに仕込むために、配布先の環境に結果が左右されます。
で後は、各ブックのセルを集計するだけです。
[ブックを開く]
[セルを読む]
は、サンプルを書くまでも無く、VBカテゴリやOfficeの過去ログにいっぱいあります。
http://okweb.jp/oshiete.php3?c=257
http://okweb.jp/oshiete.php3?c=232
Excel.Application
で検索してください。
1050YENさん
遅くなりましたが、どうもありがとうございます。
チェックボックスを使う方法が2種類あることを
初めて知りました。
あまり複雑なことを行なわない場合には、
「フォーム」から作成した方がよかったのですね。
まだ解決はしていないのですが、もっと勉強がんばります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) アンケート集計用VBAについて教えて下さい。 約100人にアンケート内容が入ったExcelファイルを 1 2022/07/27 13:12
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- Visual Basic(VBA) ExcelのVBAを使い、複数シートの同一箇所を、同一条件にて一括でソルバーを回す方法について 1 2022/04/23 11:49
- その他(プログラミング・Web制作) Pythonでexcelのvbaを作成、実行する方法について Pythonで表の自動集計プログラムを 3 2022/07/09 09:58
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Excel(エクセル) EXCEL値貼り付け(ある条件のもと自動化) 5 2023/06/06 12:21
- Excel(エクセル) エクセルVBAでチェックボックスにチェックを入れる 1 2022/09/14 00:52
- Excel(エクセル) 「Excelのオプション」の「ユーザーインターフェイスのオプション」の設定値をVBAで取得したい 1 2022/07/31 23:49
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語 exitの使い方
-
数字の位ごとの値を表示するプ...
-
フォームを開くときに、コンボ...
-
10進数をアスキーコードに変換
-
VB6.0-整数と余りを求める
-
C#.netでの切り上げ処理について
-
相関係数p値の出し方
-
VBAの定数の使い方で、計算値を...
-
DataGridView 複数行同時変更...
-
Excel-vba 文字列と変数を...
-
C#で動的にコントロールを取得...
-
【C++/CLI】String型文字列の位...
-
フリーランタイマーの時間差分...
-
4択問題のプログラムでランダム...
-
足して100になるような乱数のア...
-
C#の問題で2つの整数a,bの...
-
バッチファイルで正規表現を使...
-
C言語でしりとりのプログラムを...
-
VBAでダブルコーテーション入り...
-
Cpadで文字化け
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
Excel-vba 文字列と変数を...
-
数字の位ごとの値を表示するプ...
-
VB6.0-整数と余りを求める
-
VBAで配列のNULL判定
-
足して100になるような乱数のア...
-
フリーランタイマーの時間差分...
-
相関係数p値の出し方
-
DataGridView 複数行同時変更...
-
世界のナベアツ
-
10進数をアスキーコードに変換
-
C#で動的にコントロールを取得...
-
ラジオボタンの値の取得につい...
-
DWORDって
-
バッチファイルで正規表現を使...
-
1つ前の値を変数に保存する方法
-
4択問題のプログラムでランダム...
-
VBAの定数の使い方で、計算値を...
-
コンボボックスの名前を変数に...
おすすめ情報