Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


727 / 2272 ツリー ←次へ | 前へ→

【10376】他のボックス結果をコマンドボタンに。 heavenlycastle2003 08/5/13(火) 8:49 質問[未読]
【10379】Re:他のボックス結果をコマンドボタンに。 hatena 08/5/13(火) 12:53 回答[未読]
【10382】Re:他のボックス結果をコマンドボタンに。 heavenlycastle2003 08/5/13(火) 18:47 回答[未読]
【10383】Re:他のボックス結果をコマンドボタンに。 heavenlycastle2003 08/5/13(火) 19:11 回答[未読]
【10384】Re:他のボックス結果をコマンドボタンに。 heavenlycastle2003 08/5/13(火) 22:57 回答[未読]
【10385】Re:他のボックス結果をコマンドボタンに。 小僧 08/5/14(水) 9:51 回答[未読]
【10386】Re:他のボックス結果をコマンドボタンに。 heavenlycastle2003 08/5/14(水) 10:40 回答[未読]
【10391】Re:他のボックス結果をコマンドボタンに。 heavenlycastle2003 08/5/14(水) 14:15 お礼[未読]

【10376】他のボックス結果をコマンドボタンに。
質問  heavenlycastle2003 E-MAIL  - 08/5/13(火) 8:49 -

引用なし
パスワード
   ・テキストボックスにて年月日の年を表示。(例、2008年)
・コンボボックスにて、月を表示。(1月〜12月)
上記の結果を、コマンドボタンに表示させたい。

前回のアドバイスでフォーム読み込み時のプログラム作成を終えました。
下記のものは、2008年5月のカレンダーを表示するプログラムです。
・予め年を手入力したテキストを用意。
・コンボボックスにて1月を選択した時に1月のカレンダーをコマンドボタンに。
他の月を選択した際にはその月のカレンダーを。
テキストが2007年、コンボボックスが5月だったら、そのカレンダーになるようにしたいと考えています。


どなたかお知恵を拝借出来ればと思ってます。 宜しくお願いします。

Option Compare Database
>Option Explicit
>
>Private Sub Form_Load()
>
>  Call MakeCalender(2008, 5)
>
>End Sub
>
>
>Sub MakeCalender(CurrentYear As Long, CurrentMonth As Long)
>Dim i As Long
>Dim First_Day As Long     '初日が何番目のコントロールか
>Dim Last_Day As Long     '末日が何番目のコントロールか
>
>  First_Day = Weekday(DateSerial(CurrentYear, CurrentMonth, 1))
>  Last_Day = DateDiff("d", DateSerial(CurrentYear, CurrentMonth, 1), _
>        DateSerial(CurrentYear, CurrentMonth + 1, 0)) + First_Day
>              
>'初日が入るまでは空白を代入
>  For i = 1 To First_Day - 1
>    Me.Controls("C" & i).Caption = ""
>  Next i
>
>'初日から末日までは日付を代入
>  For i = First_Day To Last_Day
>    Me.Controls("C" & i).Caption = i - First_Day + 1
>  Next i
>
>'末日が入るまで空白を代入
>  For i = Last_Day + 1 To 42
>    Me.Controls("C" & i).Caption = ""
>  Next i
>
>End Sub

【10379】Re:他のボックス結果をコマンドボタンに。
回答  hatena  - 08/5/13(火) 12:53 -

引用なし
パスワード
   > ・予め年を手入力したテキストを用意。
> ・コンボボックスにて1月を選択した時に1月のカレンダーをコマンドボタンに。

年を入力するテキストボックス名を、txt年
月を選択するコンボボックス名を、cmb月
と仮定します。

txt年 の更新後処理で、

Private Sub txt年_AfterUpdate()
  If Not IsNull(Me.txt年) AND Not IsNull(Me.cmb月) Then
    Call MakeCalender(Me.txt年, Me.Cmb月)
  End If
End Sub

cmb月の更新後処理で、

Private Sub cmb月_AfterUpdate()
  Call txt年_AfterUpdate()
End Sub

でいかがでしょうか。

【10382】Re:他のボックス結果をコマンドボタンに。
回答  heavenlycastle2003 E-MAIL  - 08/5/13(火) 18:47 -

引用なし
パスワード
   ▼hatena さん:

>txt年 の更新後処理で、
>
>Private Sub txt年_AfterUpdate()
>  If Not IsNull(Me.txt年) AND Not IsNull(Me.cmb月) Then
>    Call MakeCalender(Me.txt年, Me.Cmb月)
>  End If
>End Sub
>
>cmb月の更新後処理で、
>
>Private Sub cmb月_AfterUpdate()
>  Call txt年_AfterUpdate()
>End Sub

早速やってみます。有難うございました。

【10383】Re:他のボックス結果をコマンドボタンに。
回答  heavenlycastle2003 E-MAIL  - 08/5/13(火) 19:11 -

引用なし
パスワード
   ▼hatena さん:
>> ・予め年を手入力したテキストを用意。
>> ・コンボボックスにて1月を選択した時に1月のカレンダーをコマンドボタンに。
>
>年を入力するテキストボックス名を、txt年
>月を選択するコンボボックス名を、cmb月
>と仮定します。
>
>txt年 の更新後処理で、
>
>Private Sub txt年_AfterUpdate()
>  If Not IsNull(Me.txt年) AND Not IsNull(Me.cmb月) Then
>    Call MakeCalender(Me.txt年, Me.Cmb月)
>  End If
>End Sub
>
>cmb月の更新後処理で、
>
>Private Sub cmb月_AfterUpdate()
>  Call txt年_AfterUpdate()
>End Sub


実行しました。が、実行時エラー13
         型が一致しません。 が表示され、
下記の該当箇所が黄色く変わります。
>    Call MakeCalender(Me.テキスト0, Me.コンボ0)

御報告まで・・・・。

【10384】Re:他のボックス結果をコマンドボタンに。
回答  heavenlycastle2003 E-MAIL  - 08/5/13(火) 22:57 -

引用なし
パスワード
   ▼hatena さん:
>>> ・予め年を手入力したテキストを用意。
>>> ・コンボボックスにて1月を選択した時に1月のカレンダーをコマンドボタンに。
>>
>>年を入力するテキストボックス名を、txt年
>>月を選択するコンボボックス名を、cmb月
>>と仮定します。
>>
>>txt年 の更新後処理で、
>>
>>Private Sub txt年_AfterUpdate()
>>  If Not IsNull(Me.txt年) AND Not IsNull(Me.cmb月) Then
>>    Call MakeCalender(Me.txt年, Me.Cmb月)
>>  End If
>>End Sub
>>
>>cmb月の更新後処理で、
>>
>>Private Sub cmb月_AfterUpdate()
>>  Call txt年_AfterUpdate()
>>End Sub
>
>
>実行しました。が、実行時エラー13
>         型が一致しません。 が表示され、
>下記の該当箇所が黄色く変わります。
>>    Call MakeCalender(Me.テキスト0, Me.コンボ0)
>
>御報告まで・・・・。


あれから hatena さん が作って頂いたものを元に理解度を深めようとしていますが、どこでエラーで引っかかってしまったのか、未だにわからない状態です。
よろしければ、エラーになった箇所の探し方を教えて頂くとともに、その箇所をどの様に記述すれば成功するのかを教えて下さい。

エラー内容: 実行時エラー13
       型が一致しません。
                黄色になったところの先頭に@にしています。
             Call MakeCalender 〜・・・
               一行のみ。

Private Sub コンボ0_AfterUpdate()
 Call テキスト0_AfterUpdate
End Sub           ↑
              ・AfterUpdate() と言う風にあったのですが、()                は入らなかった為に() を記述していません。

Private Sub テキスト0_AfterUpdate()
 If Not IsNull(Me.テキスト0) And Not IsNull(Me.コンボ0) Then
@−−− Call MakeCalender(Me.テキスト0, Me.コンボ0)
 End If
End Sub

【10385】Re:他のボックス結果をコマンドボタンに。
回答  小僧  - 08/5/14(水) 9:51 -

引用なし
パスワード
   ▼heavenlycastle2003 さん、hatena さん:
こんにちは。

>よろしければ、エラーになった箇所の探し方

>>下記の該当箇所が黄色く変わります。
>>>    Call MakeCalender(Me.テキスト0, Me.コンボ0)

エラーになった箇所はそのまま、
黄色に反転した場所ですよね。

エラーの原因はご提示されている情報そのもの、

>>実行しました。が、実行時エラー13
>>         型が一致しません。 が表示され、

「型」が一致していない、との事です。


>>> Sub MakeCalender(CurrentYear As Long, CurrentMonth As Long)

MakeCalender というプロシジャを呼び出す際には2つの引数を必要としています。
・CurrentYear:長整数型
・CurrentMonth:長整数型

> Call MakeCalender(Me.テキスト0, Me.コンボ0)

テキスト0、コンボ0の値が数値以外ですと、
「型」は一致しない事になりますが大丈夫でしょうか。


※前回の回答の際、2008年5月のカレンダーを作るサンプルをでしたので
 CurrentYaer、CurrentMonthという変数名を使っております。
 
 お望みに様にテキストボックス、コンボボックスで
 自由に年月を選ばせるという事ですので、
 heavenlycastle2003さん以外がこのコードを見ても理解し易いように
 適当な変数名に変えた方が良いと思われますよ。

【10386】Re:他のボックス結果をコマンドボタンに。
回答  heavenlycastle2003 E-MAIL  - 08/5/14(水) 10:40 -

引用なし
パスワード
   ▼小僧 さん:
こんにちは。

なるほど。充分過ぎる位のご返事を有難うございました。
直ぐに実行に移します。
成功したら、ここに載せます。

【10391】Re:他のボックス結果をコマンドボタンに。
お礼  heavenlycastle2003 E-MAIL  - 08/5/14(水) 14:15 -

引用なし
パスワード
   ▼小僧 さん:
こんにちは。

出来ました。有難うございました。

今までわからないものを集めて理解度を高めて行きたいと思ってます。
教えて頂いたプログラムの記述内容は、あまり変えていない為、完成したプログラムは載せていません。

そして、文字列と数値型で引っ掛かっていました。

解決。

727 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078199
(SS)C-BOARD v3.8 is Free