• ベストアンサー

マクロでカレンダーから選択したセルに日付を入力したい

こんばんは。最近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

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

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

こんばんは。 >今の記述だと、1つのセルだけ入力した後、次のセル選択が出来ず困っています。 それは、教本に載っているはずです。#1 さんのような書き方もありますが、最近、私は、以下のようにしています。 UserFormのプロパティの ShowModal -> False それよりも、私には、 >Private Sub UserForm_Initialize() >Calendar1.Value = Data >End Sub の部分が良くわかりませんが。Dataってなんでしょうね。  Date のことかな? なお、フリーに日付を入れるなら、このようにしたほうがよいでしょうね。 Private Sub Calendar1_Click()  With ActiveCell   .NumberFormatLocal = "mm/dd"   .Value = Calendar1.Value  End With End Sub

sakurasaku_2006
質問者

お礼

早々の回答ありがとうございました。先ほど出来ました!初歩的な事なのに難しいですね。助かりました。

その他の回答 (1)

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>今の記述だと、1つのセルだけ入力した後、次のセル選択が出来ず困っています。 フォームを表示させたまシートを選択するには、フォームの起動時におまじないが必要です。 UserForm1.Show vbModeless

sakurasaku_2006
質問者

お礼

早々の回答ありがとうございました。”UserForm1.Show vbModeless”の記述はプログラムの一番最初に宣言が必要になるのでしょうか?今度チャレンジしてみます。

関連するQ&A

  • Excel 2007 マクロについて

    初心者なりに試行錯誤しながら、チャレンジしています。 B1セルには日付が入力されています。 B1をダブルクリックしたときにUserForm1のTextBox1にその 日付を表示したいのですが上手くいきません。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("B1:B15")) Is Nothing Then Exit Sub Cancel = True UserForm1.Show UserForm1.TextBox1.Value = Target.Value Unload UserForm1 End Sub どこをどのように修正したらよろしいでしょうか?

  • Excel カレンダーフォーム VBA セルごとに入力方法

    VBA初心者ですが、どうか教えて下さい。 EXCELのSheet1に、日付を入力する欄を7つあります。 (例: A1, B2, C3, D4, E5,F6,G8) それぞれ別の日付で入力していく事になるものです。 UserForm1にカレンダーコントロールを作成し、 以下のコードまで出来ました。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) UserForm1.Show End Sub この先がわからないのです。 このカレンダーコントロールを利用して、例えばA1を選択した時、 カレンダーが表示され「2007/10/11」とクリックで入力でき、 次にB2を選択した時、「2007/10/13」と選択し入力でき。。。等、 決まったセルの場所に、任意で日付を入れるようにしたいのです。 初心者ですみませんが、どうか教えて下さい。宜しくお願いします。

  • 選択したセルでダブルクリックをするとエクセルマクロによりそのセルがコピ

    選択したセルでダブルクリックをするとエクセルマクロによりそのセルがコピーされて、メモ帳等のテキストエディタで貼りつけるとその値が出るようにしたいと思っています。 ほとんどイメージ通りにできたのですが、テキストエディタで貼りつけた値に加えて改行が入ってしまいます。 どのようにすると改行コードを消せますか?できないのなら、どのようにすればエクセルで任意のセルをダブルクリックをしたときに改行コードのないようにコピーできますか? 参考に現在のVBEで記述したコードを示します。 ----------------------------- Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _ Cancel As Boolean) Target.Interior.ColorIndex = 37 Cancel = True Target.Copy End Sub

  • excel マクロでの特殊文字入力方法

    マクロで特殊文字入力は出来ないのでしょうか? やりたい内容は、セルをダブルクリックした時に✓を表示させたいのです。 セルをダブルクリックした時に○を表示するマクロが、下記の通りである時、 ○の代わりに✓を表示させたいのですが、VBAで○の所に✓で書き換えると ?と表示されてしまいます。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) With Target If .Value = "○" Then .Value = "" Else .Value = "○" End If End With End Sub

  • Excelのマクロで、IFを複数セルに指定するには

    セルA1、B1、C1をダブルクリックすると各セルの値が+1ずつ増える Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address = "$A$1" Then Target.Value = Target.Value + 1: Cancel = True If Target.Address = "$B$1" Then Target.Value = Target.Value + 1: Cancel = True If Target.Address = "$C$1" Then Target.Value = Target.Value + 1: Cancel = True End Sub というマクロを使用致しておりますが、これに追加で セルA1をダブルクリックした時に、A1と同時にセルC1も+1増やせる 方法があれば教えて頂けると幸いです。 宜しくお願い致します。

  • エクセルで特定のセルへの直接入力だけを禁止したいんです。

    過去の質問を参考に『セルをダブルクリックすると"○"と入力される』というマクロを○⇒●⇒-⇒  ⇒○⇒・・・として使っているんですが、ダブルクリックの度にセルが直接入力の状態(縦の棒の点滅)になってしまい、一度他のセルをクリックしないと次へ進めずに困っています。 良い方法ってあるのでしょうか? ちなみに使用しているマクロは Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Const rng As String = "A1:A3" '処理対象のセル範囲 If Not Application.Intersect(Target, Range(rng)) Is Nothing Then If Target.Value = "" Then Target.Value = "○" ElseIf Target.Value = "○" Then Target.Value = "●" ElseIf Target.Value = "●" Then Target.Value = "-" Else Target.ClearContents End If End If End Sub というものです。 よろしくお願いします。

  • 選択セルに計算結果を表示

    エクセルVBAで選択セルに計算結果を表示したいのですが、教えてください。 A列には、ID B・C列には値が入力されています。 下記の構文ですと、行のどこをダブルクリックしても、D列に合計が表示されます。 D列以降のどの行をダブルクリックしても、アクティブなセルに合計を表示したいです。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cells(Target.Row, 4) = Cells(Target.Row, 2) + Cells(Target.Row, 3) End Sub

  • Private Sub Worksheet_BeforeDoubleC

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Column = 4 Then Target.Value = Date End If If Target.Column = 5 Then Target.Value = Date End If End Sub これは、他の方の回答で4列と5列のどこかをダブルクリックすると日付が入力されました。 しかし、シートの保護を入れるとダブルクリックしても入力されません。 それで、例えば、B3セルとかC3セルとかの特定のセルをダブルクリックすると日付が入力されるようにできませんか?宜しくお願いします。

  • エクセルVBA ダブルクリックした左隣の値を返す方法

    いつもお世話になっております。 あるワークシートにおいて、 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _ Cancel As Boolean) If ActiveCell.Column = 7 Then Target.Value = "希望" End If End Sub というマクロを記述することができました。 今度は、 G列のどこかのセルをダブルクリックすると、 同じ行のE列の値が、 ダブルクリックしたセルに入るようにしたいのです。 どのような記述をすればよいのか ご教示ください。

  • Excel セルをクリックするだけで入力(エクセル2003)

    http://questionbox.jp.msn.com/qa915096.html からの転載で申し訳ありません。 この中で、jindonさまの方法で、2つの文字の入れ替えはできました。 ------------------------------------------------ Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) With Target If .Row=1 And .Column=1 Then If .Value = "○" Then .Value = "" Else .Value = "○" End If End If End With End Sub ------------------------------------------------ そこで、例えば○△×のように、順番に3つの文字を入れ替えるにはどう記述すればよいでしょうか? よろしくお願いいたします。

専門家に質問してみよう