プロが教える店舗&オフィスのセキュリティ対策術

Excel2003を使って、(既に用意されている)カレンダーから該当日を選択し、
対象のセルにその日付を反映(代入)させる方法について教えてください。

例えば、A1セルに「終了予定日」とあり、隣りのB1セルに日付を入力する際には、
まず(用意されている)カレンダーを表示させ、そこから該当日(2014.3.31)を選択後、
そのままその日付をB1セルに反映(代入)できるようにしたいのですが、
何かいい方法はありませんでしょうか?

他の質問箱も見て、挿入→オブジェクト→カレンダーコントロール11.0など、
色々試してみたのですが、うまくいきませんでした。

お分かりになる方がおられましたら、分かりやすいご説明よろしくお願いします。

A 回答 (4件)

補足につきまして・・・


「B1選択時以外はカレンダー非表示」と
「日付入力後、B2セルを選択」の記述を追加しました。

コードを以下のものに入れ替えてみてください。。。

Private Sub Calendar1_Click()
Range("B1").Value = Calendar1.Value
Calendar1.Visible = False
Range("B2").Activate
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("B1")) Is Nothing Then
Calendar1.Visible = True
Else
Calendar1.Visible = False
End If
End Sub
    • good
    • 1
この回答へのお礼

希望通りの形になりました。
完璧で~~す!!

ご協力感謝いたします。
本当にありがとうございました。

お礼日時:2014/01/28 09:18

>(上記の“カレンダー”とは、カレンダーコントロール


>11.0で表示したものを指しているのでしょうか?)

その解釈で大丈夫です。。

2003でのプロパティシートの出し方は、以下のURLにありました。
http://juen-cs.dl.juen.ac.jp/html/office2003-200 …
「■コントロールツールボックス ツールバー|プロパティ」
の部分を参照下さいm(_ _)m

この回答への補足

もう一つ要望があります。

B1セルに日付が登録された後、カレンダーが
非表示となったら、カーソルをB2セルに移動させて
おきたいのですが、こちらの操作方法についても
ご教示願います。

補足日時:2014/01/27 14:58
    • good
    • 0
この回答へのお礼

色々とアドバイスいただき、ありがとうございます。
上記の手順で操作したところ、ほぼ希望通りの形に
なってきました。

あと一つ要望ですが、B1セルにカーソルを持っていき、
カレンダーが表示されるのはよいのですが、何も日付を
選択せずに、B1セルを離れた場合にもカレンダーが
非表示になるような設定にしたいのですが。

たびたびの質問ですみません。。。

お礼日時:2014/01/27 09:23

スペースを取ってしまう件に関しては、確かに懸念しておりました^^;



以下ではデフォルトで非表示設定→B1を選択するとカレンダー表示→日付クリックで日付反映/再度非表示、という流れになっています。
このような感じで如何でしょうか。。

1)カレンダーのプロパティシートを表示する。
(2007の場合、カレンダーの上で右クリック→プロパティで表示できますが、2003が手元に無い為同様の操作で出来るかはちょっと未確認です)

2)「Visible」の項目が「True」になっていると思うので「False」にする。
(これでデフォルト非表示になります)

3)最初の回答同様に「コードの表示」を選択し、以下の7行を記述する。
Private Sub Calendar1_Click()
Range("B1").Value = Calendar1.Value
Calendar1.Visible = False
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("B1")) Is Nothing Then Calendar1.Visible = True
End Sub

(Calendar1_Click内に選択後非表示にする記述を追加、またB1セルを選択した場合に表示させるイベントを新たに追加しています)

※最初の回答にある3行の記述が残っていたら削除して下さい。

またカレンダーの位置はデザインモードで表示させたい箇所に移動させておくと良いかと思います。。
    • good
    • 1
この回答へのお礼

たびたびのご回答、ありがとうございます。

上記1)項の部分をExcel2003でどのように
操作すればよいのかがどうしても分かりません。
(上記の“カレンダー”とは、カレンダーコントロール
11.0で表示したものを指しているのでしょうか?)

あと一歩なのですが。。。

他にも何か方法はありませんでしょうか?

お礼日時:2014/01/26 17:23

そのままカレンダーコントロールを使用するのであれば、デザインモードの状態で(カレンダーを挿入した時点で既になっているかとは思いますが)、カレンダーの上で右クリック→コードの表示、で、出てきた入力エリアに



Private Sub Calendar1_Click()
Range("B1").Value = Calendar1.Value
End Sub

の三行を記述し、右上の×でエディタを終了→デザインモードを解除しカレンダー内の日付をクリックしてみて下さい。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございました。

補足部分も含めて、追加質問させていただきますが、
上記のやり方だと始めからExcelのブック上にカレンダー
が表示されており、その分場所を取ってしまいます。

できれば、B1セルにカーソルを持って行った時だけ
カレンダーを表示し、日付選択後はカレンダーが非表示に
なるような形にしたいのですが、何かよい方法はあります
でしょうか?

お礼日時:2014/01/26 08:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!