• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:excelでのカレンダーコントロールの設定について)

Excelでのカレンダーコントロール設定について

このQ&Aのポイント
  • Excelでカレンダーコントロールを設定する方法について説明します。ターゲットのセルが結合されている場合、カレンダーコントロールが正しく表示されない問題があります。
  • 結合されたセルのターゲットにカレンダーコントロールを表示するための解決策を探しています。結合を解除すれば問題は解決しますが、結合したままカレンダーコントロールを表示する方法はありますか?
  • Excelのフォームコードとシートコードを使用してカレンダーコントロールを設定しています。フォームコードではカレンダーコントロールのダブルクリックで値をセルに入力し、シートコードでは特定のセルを選択した際にカレンダーコントロールを表示するようにしています。

質問者が選んだベストアンサー

  • ベストアンサー
noname#130090
noname#130090
回答No.1

これでいけるのではないかという案を。 どのセルが結合しているのかわかりませんが 仮に「A6とB6」が結合されているのでしたら Target.Address <> "$A$6" を Target.Address <> "$A$6:$B$6" ←と、 このように変えてみてはいかがでしょうか? ワイルドカードを使う方法も考えてみましたが ターゲットが「AA67」などの場合にも 誤作動してしまいそうなのでこの方法を提案します。

77panda
質問者

お礼

ご回答ありがとうございます! 結合しているセルはA6~A8でした。 ご回答を参考に$A$6:$A$8でやってみたところ、うまくいきました! ありがとうございましたm(_ _)m

その他の回答 (1)

  • myRange
  • ベストアンサー率71% (339/472)
回答No.2

>ターゲットとしているセルが、結合セルなのですが、うまく表示されません うまく表示されないとは、UserFormが表示されないということですよね? 例えば、セルA6:A9 が結合されていたら、 Target.Addressは、$A$6:$A$9と結合セルの3セルのアドレスになります。 で、If Target.Address <> "$A$6" この結果は、常にTRUEになり質問のような結果になります。 結合セルありの場合でもうまくいくようにする方法を2つ提示しておきます。 '●(1)選択したセルの先頭セルのアドレスを比較-------  Private Sub Worksheet_SelectionChange(ByVal Target As Range)   If Target.Cells(1).Address <> "$A$6" And _     Target.Cells(1).Address <> "$A$13" And _     Target.Cells(1).Address <> "$A$20" And _     Target.Cells(1).Address <> "$A$27" Then Exit Sub   UserForm1.Show End Sub '●(1)Intersecメソッドを使う方法----------------  Private Sub Worksheet_SelectionChange(ByVal Target As Range)  If Intersect(Target, Range("A6,A13,A20,A27")) Is Nothing Then Exit Sub  UserForm1.Show End Sub '----------------------------------------- 以上です。

77panda
質問者

お礼

ご回答ありがとうございます! >うまく表示されないとは、UserFormが表示されないということですよね? →はい、その通りです。 基本的な用語も使えず、お恥ずかしい限りです(><;) 間違っていた理由も分かりやすいご説明のおかげで、理解できました! >●(1)Intersecメソッドを使う方法 他サイトで参考させていただいたなかに、ご提示のコード表示がありましたが、いまいち理解できず、If Target.Address <> "$A$6"にしていました。 今後も勉強していきます。ありがとうございましたm(_ _)m