Excelでのカレンダーコントロール設定について
- Excelでカレンダーコントロールを設定する方法について説明します。ターゲットのセルが結合されている場合、カレンダーコントロールが正しく表示されない問題があります。
- 結合されたセルのターゲットにカレンダーコントロールを表示するための解決策を探しています。結合を解除すれば問題は解決しますが、結合したままカレンダーコントロールを表示する方法はありますか?
- Excelのフォームコードとシートコードを使用してカレンダーコントロールを設定しています。フォームコードではカレンダーコントロールのダブルクリックで値をセルに入力し、シートコードでは特定のセルを選択した際にカレンダーコントロールを表示するようにしています。
- ベストアンサー
excelでのカレンダーコントロールの設定について
excelでカレンダーコントロールを設定しました。 ターゲットとしているセルが、結合セルなのですが、うまく表示されません。セルの結合を解除すればうまくいきます。 しかし、ターゲットのセルは結合させておきたいので、何か解決策はありますでしょうか? 以下、コードの内容です。 ■フォームコード Private Sub Calendar1_DblClick() ActiveCell.Value = Me.Calendar1.Value End Sub ■シートコード Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address <> "$A$6" And Target.Address <> "$A$13" And Target.Address <> "$A$20" And Target.Address <> "$A$27" Then Exit Sub UserForm1.Show End Sub
- 77panda
- お礼率86% (25/29)
- オフィス系ソフト
- 回答数2
- ありがとう数6
- みんなの回答 (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
関連するQ&A
- Excel2007のカレンダーコントロール
Excel2007のカレンダーコントロールで質問します。 Private Sub Calendar1_Click() ActiveCell.Value = Calendar1.Value ActiveSheet.Calendar1.Visible = False End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$A$4" Then ActiveSheet.Calendar1.Visible = True End If End Sub この状態ですと、セルA4をクリックしたときだけカレンダーコントロールが表示されます。 A列をどこでもクリックしたときにカレンダーコントロールが表示されるようにするには どこを、どう変更すればよいのでしょうか? 教えてください。
- ベストアンサー
- オフィス系ソフト
- 指定セルクリックでカレンダー表示
Excelsheet1VBAコードに下記に記載されておりA列全てのセルクリックでカレンダーが表示されますがA1セルクリックのみカレンダー表示するにはどのようにコードを変更すれば良いかお願いします。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' 複数セル選択時は無視 If Target.Count <> 1 Then Exit Sub ' A列以外は無視(今回サンプルの例) If Target.Column <> 1 Then Exit Sub ' カレンダーフォームを起動する Call ShowCalendarFromRange(Target) End Sub
- ベストアンサー
- Visual Basic
- マクロでカレンダーから選択したセルに日付を入力したい
こんばんは。最近VBAの勉強を始め参考書を見ながら下記プログラミングを使い、選択したセルにカレンダーから日付をダブルクリックで入力したいのですが、記述が分かりません(○○○部分)。入力するセルは行や列を一行毎ずらしたりせず、自由に選択してダブルクリック入力したいのです。今の記述だと、1つのセルだけ入力した後、次のセル選択が出来ず困っています。ご指導宜しくお願い致します。 Private Sub Calendar1_Click() ActiveCell.Value = Calendar1.Value ○○○○ End Sub ----------- Private Sub UserForm_Initialize() Calendar1.Value = Data End Sub ----------- Private Sub Sheet1_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Column <> 1 Then Exit Sub UserForm1.Show Cancel = True End Sub
- ベストアンサー
- オフィス系ソフト
- エクセルVBAについて
エクセルVBAについて range("B5") = 1行の、選択したセルの値 というようなマクロを作成したいと思っています。 というのも、B5セルの値が、1行で選択したセルの値に変化できればと思っています。 ちなみに下のようなコードを書いてみたのですが、うまくいきません orz Private Sub Worksheet_SelectionChange(ByVal Target As Range) Range("B5") = Rows(1).ActiveCell.Value End Sub 初心者で申し訳ありませんが、よい方法がありましたら、 よろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
- エクセルコードについて
エクセルコードについて Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Row >= 1 And Target.Row <= 10 And Target.Column >= 1 And Target.Column <= 10 Then If Target.Value = "○" Then Target.Value = "" Else Target.Value = "○" End If Cancel = True End If End Sub ではセルA1~J10ですが、これをA1~A10などに変更するのにはどのようにすればよろしいでしょうか。
- 締切済み
- その他(ビジネス・キャリア)
- マクロの疑問
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address <> "A2" Then Range("A2").Select End If End Sub とすると、どのセルを選んでもA2に飛ぶのに、 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "A3" Then Range("A2").Select End If End Sub とすると、A3を選んでも全く移動しないのはなぜでしょうか。 なにか落とし穴がありそうで。。。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルVBAについて
エクセルVBAについて 下にある、1行目に入力された数値の、選択したセルの数値を、B5セルに表示させるマクロなのですが、1行目が結合していると、うまくB5セルに表示できません。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Count > 1 Then Exit Sub '●複数セル選択は無視 If Target.Row <> 1 Then Exit Sub '●1行目以外の選択は無視 If Target.Column > 6 Then Exit Sub '●F列目以降の選択は無視 If Target.Value = "" Then Exit Sub '●選択セルが未入力なら無視 Range("B5").Value = Target.Value End Sub このマクロで、結合しているセルをB5に表示させることはできますでしょうか? 1行目で選択するセルは、すべて2つのセルが結合しています。 よろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
- エクセル フォームを閉じてセルに戻る
何時もご指南頂きとっても感謝いたしております さて 先般こちらで ご指南頂き Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Cells.Count = 1 Then Select Case Target.Column Case 1 ' A列の場合 UserForm1.ListBox1.ControlSource = Target.Address UserForm1.Show Case 2 ' B列の場合 UserForm2.ListBox1.ControlSource = Target.Address UserForm2.Show End Select End If End Sub というコードを作りましたがそれぞれのフォームをリストボックスを選択した後 自動で其のフォーム閉じてシートに戻るとき最初にWクリックしたセルの右隣のセルに戻るようにしたいのですが いろいろ私なりに試してみましたがダメでした どうかご指南ください よろしくお願いいたします。
- ベストアンサー
- Visual Basic
- セル横にカレンダーを表示、入力したい。
教えて!goo に昨日登録し、初質問させていただく gekkadokusyaku(月下独酌) と申します。 新参者をよろしくお願いします。 Excel2010で家計簿を作成中です。セル横にカレンダー表示して日付をクリック入力したいのですが、カレンダーを入力セル横に持ってくるにはどうしたらよいでしょうか。(カレンダーが画面中央に来てしまいます。)カレンダーはネット上からダウンロードしたものを使用しています。 下記のマクロが家計簿シートに記してあります。これに何か書き加えて希望のものができないでしょうか。 Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) '家計簿にカレンダー表示 If Target.Column = 1 Or Target.Column = 11 Or Target.Column = 21 Then If Target.Row >= 5 And Target.Row <= 65 Then frmCal.Show End If End If End Sub 以上よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- エクセルのマクロコードに付いて教えて下さい。
下記のマクロコードがありますが、 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$1" Then Exit Sub x = Target.Value With Application .ScreenUpdating = False .EnableEvents = False .Undo y = Target.Value Target.Value = x + y .EnableEvents = True .ScreenUpdating = True End With End Sub セル位置の指定を変更する場合は、どの様に 書けば良いのですか? このコードですと、セルA1の入力指定でなっていますが A1~A5までとか。A1、B1,C1とかにする場合はどの様に 書けば良いか教えて下さい。 マクロに付いて、殆ど知識が無いものですので 出来れば、分かり易い説明でお願いします。 宜しくお願いします。
- 締切済み
- 数学・算数
お礼
ご回答ありがとうございます! 結合しているセルはA6~A8でした。 ご回答を参考に$A$6:$A$8でやってみたところ、うまくいきました! ありがとうございましたm(_ _)m