- ベストアンサー
Excelでのカレンダーコントロール設定について
- Excelでカレンダーコントロールを設定する方法について説明します。ターゲットのセルが結合されている場合、カレンダーコントロールが正しく表示されない問題があります。
- 結合されたセルのターゲットにカレンダーコントロールを表示するための解決策を探しています。結合を解除すれば問題は解決しますが、結合したままカレンダーコントロールを表示する方法はありますか?
- Excelのフォームコードとシートコードを使用してカレンダーコントロールを設定しています。フォームコードではカレンダーコントロールのダブルクリックで値をセルに入力し、シートコードでは特定のセルを選択した際にカレンダーコントロールを表示するようにしています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
これでいけるのではないかという案を。 どのセルが結合しているのかわかりませんが 仮に「A6とB6」が結合されているのでしたら Target.Address <> "$A$6" を Target.Address <> "$A$6:$B$6" ←と、 このように変えてみてはいかがでしょうか? ワイルドカードを使う方法も考えてみましたが ターゲットが「AA67」などの場合にも 誤作動してしまいそうなのでこの方法を提案します。
その他の回答 (1)
- myRange
- ベストアンサー率71% (339/472)
>ターゲットとしているセルが、結合セルなのですが、うまく表示されません うまく表示されないとは、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 '----------------------------------------- 以上です。
お礼
ご回答ありがとうございます! >うまく表示されないとは、UserFormが表示されないということですよね? →はい、その通りです。 基本的な用語も使えず、お恥ずかしい限りです(><;) 間違っていた理由も分かりやすいご説明のおかげで、理解できました! >●(1)Intersecメソッドを使う方法 他サイトで参考させていただいたなかに、ご提示のコード表示がありましたが、いまいち理解できず、If Target.Address <> "$A$6"にしていました。 今後も勉強していきます。ありがとうございましたm(_ _)m
お礼
ご回答ありがとうございます! 結合しているセルはA6~A8でした。 ご回答を参考に$A$6:$A$8でやってみたところ、うまくいきました! ありがとうございましたm(_ _)m