- ベストアンサー
VBA スケジュール表作成_連想配列で祝日設定
- VBAを使用してExcelのスケジュール表を作成する際に、連想配列を使用して祝日の設定を行いたい。しかし、祝日の曜日のセルをグレー&赤文字にすることができず、解決方法を模索している。
- VBAを使ってExcelのスケジュール表を作成する際に、祝日の曜日のセルをグレー&赤文字にしたい。連想配列を使って祝日を管理しているが、月日が2ケタの祝日に対してうまく動作しない問題が発生している。
- VBAを利用してExcelのスケジュール表を作成しているが、祝日のセルがうまくグレー&赤文字にならない。連想配列で祝日を管理しており、月日が2ケタの祝日に対して問題が発生している。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
bufを日付として格納してください。 ElseIf Not myDic.Exists(CDate(buf)) Then '辞書にまだ登録されていなければ myDic.Add CDate(buf), CDate(buf) 'そのセルの値を連想配列に登録する。
その他の回答 (3)
- kkkkkm
- ベストアンサー率66% (1731/2601)
> object.Add key, item ’←ここに追加? > myDic.Add CDate(buf), CDate(buf) 'その ごめんなさい説明不足でした。 Add メソッド (Dictionary オブジェクト)の構文が object.Add key, itemなので コードでは myDic.Add CDate(buf), CDate(buf) となります。 という事で、コードは最初の回答のままでお願いします。 あと、質問と関係ないところなのでまたもや蛇足なのですが maxRowとKeyの変数宣言がありませんでした。 ツール→オプションで変数宣言を強制する にしておいた方がいいかもしれません。 https://www.239-programing.com/excel-vba/basic/basic032.html
お礼
kkkkkm様 ご回答ありがとうございます。 そうだったんですね、承知致しました。 多々抜けているところを見直して頂いてありがとうございます。 変数宣言と強制宣言の設定を変えます。 必要なことを沢山押教えて下さりありがとうございました。
- kkkkkm
- ベストアンサー率66% (1731/2601)
No2の蛇足です。 myDic.Item(Key) keyをもとにItemを取り出しますので今回の場合Itemは同じものを指定してください。 object.Add key, item myDic.Add CDate(buf), CDate(buf) '
お礼
kkkkkm様 せっかく補足頂きましたのに、理解できず申し訳ありません。 つまりこういう事ですか? If buf = "" Then '空白セルではなく ElseIf Not myDic.Exists(CDate(buf)) Then '辞書にまだ登録されていなければ object.Add key, item ’←ここに追加? myDic.Add CDate(buf), CDate(buf) 'そのセルの値を連想配列に登録する。 End If
- unokwave
- ベストアンサー率58% (966/1654)
myDic.Add buf, 1 を myDic.Add Replace(buf, "/0", "/"), 1 にして下さい。
お礼
unokwave様 ご回答頂きありがとうございます。 ご指摘のところを変更してみましたが、セルグレー赤文字にはなりませんでした。 申し訳ありません。
お礼
kkkkkm様 ご回答ありがとうございます。 ご回答の通りに変更しましたら、希望通りになりました! マクロの完成に向けて頑張ります。 ありがとうございました。
補足
CD関数の事知らなかったので、自分メモとして、下記残させて頂きます。 すみません! CDate 関数は、指定した値を日付型 (Date) に変換。 文字列を日付型に変換したいときに使用。 CDate(値) 値を日付型 (Date) に変換。 引数「値」 文字列や数値を指定します。 戻り値の型 日付型 (Date)