[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『カレンダーコントロール』(初心者)
XPでエクセル2007を使っています。
工事日程表で、A7に日付を入れると日程表の開始日になり、
B12からE43まで各工程の開始日と終了日を入れると矢印を
引ける様にしたいのですが、カレンダーコントロールでつまづいています。
下記コードで、A7は正常に動作するのですが、B12〜E43では
カレンダーが出てこなくて、エラーも出ないのでどこが間違っているのか
わかりません。御教示をお願い致します。
Private Sub Calendar1_Click()
Range("A7").Value = Calendar1.Value
ActiveSheet.Calendar1.Visible = False
End Sub
Private Sub Calendar2_Click()
Range("B12:E43").Value = Calendar2.Value
ActiveSheet.Calendar2.Visible = False
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$7" Then
ActiveSheet.Calendar1.Visible = True
ActiveSheet.Calendar1.Value = Date
End If
If Target.Count <> 1 Then Exit Sub
If Target.Address = "($B$12:$E$43)" Then
ActiveSheet.Calendar2.Visible = True
ActiveSheet.Calendar2.Value = Date
End If
End Sub
質問に関する問題点だけ。
>If Target.Count <> 1 Then Exit Sub があるので複数セルを選択した場合はここで終わり、 >If Target.Address = "($B$12:$E$43)" Then までいかない。 (ねむねむ)
>If Target.Address = "($B$12:$E$43)" Then これはB12:E43を範囲選択したときでないと真にならない。
B12:E43のどれかということであればそれ以外を If Target.Count > 1 Then Exit Sub If Intersect(Target, Range("B12:E43")) Is Nothing Then Exit Sub で、はじいてみてくれ。 (ねむねむ)
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, Range("a7,b12:e43")) Is Nothing Then ActiveSheet.Calendar1.Visible = True ActiveSheet.Calendar1.Value = Date End If End Sub (seiya)
If Target.Count > 1 Then Exit Sub
If Intersect(Target, Range("B12:E43")) Is Nothing Then Exit Sub を追加しましたが、何も変わりませんでした。
まず、B12:E43のどのセルをクリックしても、カレンダーがでてきません。
試しに範囲全体を選択してみましたが、でてきません。
逆にカレンダーを無理やり出して日付をクリックすると、
全てのセルに日付を記入してしまいます。
範囲内のどのセルに記入したいかを記述しないといけないと思うのですが、
記述方法がわかりません。
(初心者)
seiya氏へ。 B12:E43の時はCalendar2のようだが。
不必要部分削除 (ねむねむ)
>B12:E43の時はCalendar2のようだが。
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, Range("b12:e43")) Is Nothing Then ActiveSheet.Calendar1.Visible = True ActiveSheet.Calendar1.Value = Date elseif target.address(0,0)="A7" then ActiveSheet.Calendar2.Visible = True ActiveSheet.Calendar2.Value = Date end if End Sub (seiya)
しかしカレンダーの日付をクリックしても
セルに日付が記入出来ません。
ActiveSheet.Calendar2.Visible = True
ActiveSheet.Calendar2.Value = Date を追記してやると、また全てのセルに記入されてしまいます。 これから2回目のコードに変えてみます。
(初心者)
カレンダー1と2が逆だったので、そこだけ直して2回目のコードを入れてみました。
カレンダー2が出てきてカレンダー2をクリックすると日付が記入されるのですが、
範囲全てのセルに記入されてしまいます。
カレンダーを呼び出す時にクリックしたセルだけに記入したいのですが、
どの様に変えたら良いでしょうか?
よろしくお願いします。
(初心者)
Private Sub Calendar1_Click()
Range("A7").Value = Calendar1.Value
Range("B12:E43").Value = Calendar1.Value
ActiveSheet.Calendar1.Visible = False
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("a7,b12:e43")) Is Nothing Then ActiveSheet.Calendar1.Visible = True ActiveSheet.Calendar1.Value = Date
End If End Sub
クリックしたセルを変数に置き変えて、そのセルにだけ日付を記入する様に
考えてみます。
(初心者)
> Range("B12:E43").Value = Calendar1.Value これ ActiveCell.Value = Calendar1.Value ? (seiya)
ただ、カレンダーが出ている時に、全然関係ないセルをクリックして、
カレンダーをクリックすると、そのセルに日付を書いてしまいます。
これくらいは我慢しないとダメかな。
(初心者)
別のセルをクリックしたときはカレンダーを見えなくすればいいんでない? (稲葉)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.