• ベストアンサー

excel vba について

お世話になります。 excel vba 初心者です。office2003使用しています。 コードの書き方が分からないのでご教授していただけないでしょうか? やりたいことは、 セルのC5をダブルクリックしたときに、カレンダーコントロールを表示させ、カレンダーの日付をクリックした時にその日付をC5へ渡しカレンダーコントロールを閉じたいです。 よろしくお願いいたします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

'シートモジュール Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)  Cancel = True  If Target.Address <> "$C$5" Then Exit Sub  UserForm1.Show 0 End Sub 'UserForm にカレンダーコントロールを取り付けます。 Private Sub Calendar1_Click()  Dim mDate As Date  mDate = Calendar1.Value  ActiveCell.Value = mDate  Application.Wait Now + TimeSerial(0, 0, 2)  Unload Me End Sub セル幅の調整はされていませんから、日付が入るように幅を整えてください。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.4

『カレンダーコントロール エクセル』 この検索だけでよい。 『エクセルでカレンダーコントロールを使えるようにする』図入りサンプルあります。 画面を伴うものは特に、自分で操作して覚えること。コード貼付けだけではほとんど身に付かないしまた掲示板頼りでしょう。 セルを押して起動 カレンダーを使う セルに戻る 3つの機能それぞれで確認して合わせるでもよい。 初心者にありがちな、『~がしたい』と書けば親切な?方の回答、すぐにでも動きそうなのが来ます。が、それはそれだけ自己解決力が付かないまま掲示板頼りということ。意識は必要です。 使い方なんてのは探せば見つかります。 自己解決するようにしましょう。

9540
質問者

お礼

もう少し努力してみます。 ありがとうございました

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

Microfoft MonthView1と言うコントロールがあったので、これをシートに貼り付けた。 私はフォームにはカレンダーコントロールは貼り付けられたが、勉強不足か、ワークシートにはカレンダーコントロールを貼り付けることが出来なかった、ので、他を探した。 表示ーツールバーーコントロールツールボックスのその他のコントロールで、Microfoft MonthView 6.0があったので、これを指定してシートに貼り付けた。 質問shもフォームを使うのに拘っていないかもしれないが。 C1セルに「日付」(ボタンのキャプションのようなもの)と入れて、これをダブルクリックすると(ここは質問のC5と違うが) Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address = "$C$1" Then MsgBox "AA" Worksheets("Sheet3").MonthView1.Visible = True End If End Sub のイベントを発生させる。 ーー また Microfoft MonthView のイベントに Private Sub MonthView1_DateClick(ByVal DateClicked As Date) ActiveCell = DateClicked Worksheets("Sheet3").MonthView1.Visible = False End Sub を入れる。 ーーーー 操作 C1セルをクリック Microfoft MonthView が表示される。 値をセットするワークシートのセルをクリック Microfoft MonthView 上で日付を選択してクリック アクチブセルに選択した日付がセットされる。 ーー コントロールには フォームに貼り付けられるもの シートに貼り付けるものなど 何か規制する仕組みがあるようであるが、勉強不足。 http://www.asahi-net.or.jp/~zn3y-ngi/YNxv9g1740.htmlなど参考。

すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

カレンダーコントロールをシート上にイチイチロードしたりアンロードするのもメンドクサイので,シート上に直接1個事前に配置しておいて使い回してみます。 コントロールの名称はCalendar1とします。 それとたいした手間じゃありませんが,C5セル限定なのですか? シートモジュールに次をコピー Private Sub Calendar1_Click()  With ActiveSheet.OLEObjects("Calendar1")   ActiveCell.Value = .Object.Value   .Visible = False  End With End Sub Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)  If Target.Column <> 3 Then Exit Sub  'if target.address <> "$C$5" then exit sub  With ActiveSheet.OLEObjects("Calendar1")   .Top = Target.Top   .Left = Target.Left + 120   .Visible = True  End With  Cancel = True End Sub

すると、全ての回答が全文表示されます。

関連するQ&A