EXCELのカレンダーコントロールを使用しようと思ったのですが
使用先のPCにアクセスがインストールされていなかったり・・・・・
色々と制限があり自作しています。
日日を表示するボタンにはコマンドボタンを使用していますが、
ボタン数が、それだけで42個と半端なくあります。
オブジェクト名にはCommandButton1,CommandButton2・・・のように連番で名前がついてます。
Captionに値を代入する時など、これら多数のオブジェクト名を配列のように扱い、
ループで入れる方法等はありますでしょうか?
その他、何か効率的でシンプルな方法をご存知の方、是非教えていただけませんでしょうか?
当方、VBAは初心者です。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
作るならカレンダーよりも電卓ですね。
ボタンの数少ないですし仕様も明確。目的のものを作れるか、が第1、効率化はその後でも良い。
ボタン42個1つ1つなら作れないが、記載シンプルになれば作れる、というのであれば、このやり方には課題が残りそうです。
いずれにしても質問の繰り返しは初心者の域を越えるには時間かかります。力ついたと思うのは錯覚で、あまりついてない、そういうの多いのです。
No.3
- 回答日時:
まぁ「VBA コントロール配列」とかでぐぐってみれば何某かヒットしますが,
>ループで入れる方法等
程度であれば,定石で
dim i
for i = 1 to 31
me.controls("commandbutton" & i).caption = i
next i
などのようなスタイルでも,十分対応可能な範疇と思います。
コントロール配列的仕込みをしていない以上,個々のコマンドボタンごとにプロシジャは組まないといけませんが,各々からサブルーチン的共通コードに引数を渡して効率的にコーディングするような手配はしてみてください。
private sub Commandbutton1_click()
common_proc1 1
end sub
private sub Commandbutton2_click()
common_proc1 2
end sub
private sub common_proc1(a1)
msgbox "commandbutton" & a1 & " click"
exit sub
##あとはまぁ別に批判とかじゃ全然なくて個人的な感想ですが,自作しようとか仰有ってる方が「初心者です」とは,また恥ずかし気も無くとは見ててカンジてしまいますけどね。ご質問内容を見れば初心者さんなのは一目瞭然なのです(もちろん回答者側についても全く同じに言えることです)から,むしろ「何甘えてるの教えてクン?」とか思わせるだけ,逆効果じゃないかなってお話です。
No.2
- 回答日時:
こんにちは。
以前自作でカレンダーを作ったことがあります。
カレンダーを作るのは、質問者さんがどのように使う目的なのかによって
難易度が変わってくると思います。
特にコマンドボタンを配置しているということは、クリックした後に何か
動作をさせるなどですと、クラスモジュールが必要となり、
難易度がグッと増してくると思います。
>ループで入れる方法等はありますでしょうか?
コマンドボタンでもラベルでもループで回しますが、
私は
For i 1 TO 31
Next i
のように「31日」までと決め打ちするのと、コマンドボタンを31個事前に配置しておくのが嫌だったので
月末の日付を事前に取得し
For i 1 TO bytEndOfMonth
Next i
などとして、ループの数だけコマンドボタンを追加しました。
(controls.addで追加できます)
私はカレンダーは祝祭日が規則性ない?ように思えるので別途祝祭日を設定できる画面を
作りました。
頑張って下さいネ。
No.1
- 回答日時:
初心者が、どうしてコントロールを自作しようとするのか。
もっと勉強してからの話では。Googleで「エクセルVBA カレンダーコントロール」でも照会してみましたか。
そんなこともしてないで、ここに漠然と質問しているとしたらおかしい。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/v … など。
アクセスがインストールされていなくても使えるのではないか。
細部の点で意に満たないこともあっても、我慢するしかしようがない。
エクセルVBAなどにはコントロール配列の仕組みはない。
それ以上のことはクラスの勉強が必要だが、普通はVBAでは、そこまではしない。無理のしすぎ。やるなら本やWEBで自力で調べること。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAでmeに相当するもの...
-
キーボードでコマンドボタンを...
-
Excel VBAで、実行時にsheet上...
-
エラー内容が分かりません
-
複数のデータ系列の線の太さを...
-
エクセル終了時の保存確認メッ...
-
VBAを一度起動するとずっと出て...
-
cellsで特定の離れた範囲を選択...
-
ファイルリネームの良い知恵を...
-
複数のCSVファイルを横に並べて...
-
別ブックからユーザーフォーム...
-
アクセスでファイルを開いたと...
-
フォルダ内の全ブックのシート...
-
昨日まで動いていたエクセルの...
-
Adobe Reader を閉じる
-
Pictures.Insertメソッド⇒Shape...
-
エクセル2007 テキストボ...
-
Excelマクロ ファイル名が変わ...
-
ExcelVBAで今開いているユーザ...
-
フォルダ内の全ブックのシート...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エラー内容が分かりません
-
Excel VBAで、実行時にsheet上...
-
エクセルVBAでmeに相当するもの...
-
EXCEL VBA テキストボックスの...
-
コモンダイアログエラー
-
オプションボタン
-
ワードVBAで画像を挿入
-
アクセス カンレンダーコント...
-
エクセル2010のvbaとコマンドボ...
-
複数のデータ系列の線の太さを...
-
エクセルでツールバーに「縮小...
-
フォルダ内の全ブックのシート...
-
ExcelVBAで今開いているユーザ...
-
エクセル終了時の保存確認メッ...
-
昨日まで動いていたエクセルの...
-
ファイル名を今日の日付、時刻...
-
コピーしたファイルのマクロを...
-
【マクロ】マクロが割当てされ...
-
VBAを一度起動するとずっと出て...
-
エクセルの指数を無効にしたい
おすすめ情報