Access VBA質問箱 IV

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

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


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

【4044】2ヶ月後までの指定した曜日を取得する方法 morik 04/12/20(月) 16:41 質問[未読]
【4046】Re:2ヶ月後までの指定した曜日を取得する方法 かろちん 04/12/20(月) 23:44 回答[未読]
【4047】Re:2ヶ月後までの指定した曜日を取得する方法 morik 04/12/21(火) 13:15 質問[未読]
【4048】Re:2ヶ月後までの指定した曜日を取得する方法 MJ 04/12/21(火) 13:21 回答[未読]
【4049】Re:2ヶ月後までの指定した曜日を取得する方法 morik 04/12/21(火) 13:58 質問[未読]
【4050】Re:2ヶ月後までの指定した曜日を取得する方法 MJ 04/12/21(火) 16:33 回答[未読]
【4054】Re:2ヶ月後までの指定した曜日を取得する方法 morik 04/12/22(水) 10:40 質問[未読]
【4057】Re:2ヶ月後までの指定した曜日を取得する方法 MJ 04/12/22(水) 13:11 回答[未読]
【4058】Re:2ヶ月後までの指定した曜日を取得する方法 morik 04/12/22(水) 16:05 お礼[未読]

【4044】2ヶ月後までの指定した曜日を取得する方法
質問  morik  - 04/12/20(月) 16:41 -

引用なし
パスワード
   いつもお世話になっております。

標記の件でご質問があります。

現在、テキスト型で日付をYYYY/MM/DD形式で入力しているのですが、
これをコンボボックスでプルダウンをすると現在の日付より2ヶ月後の火曜日と水曜日が
プルダウンに表示するようにしたいです。

いろいろなDate関数を調べては見たのですが良い方法が思い浮かびません。

良い方法がございましたらご教授お願い致します。

【4046】Re:2ヶ月後までの指定した曜日を取得する...
回答  かろちん  - 04/12/20(月) 23:44 -

引用なし
パスワード
   こんばんは

>現在、テキスト型で日付をYYYY/MM/DD形式で入力しているのですが、
>これをコンボボックスでプルダウンをすると現在の日付より2ヶ月後の火曜日と水曜日が
>プルダウンに表示するようにしたいです。

2ヵ月後を計算するのはHELPで
DateAdd関数を調べてみてください。

曜日を表示するのは、Format関数を
調べてみてください。
WeekDay関数も調べてみてください。

【4047】Re:2ヶ月後までの指定した曜日を取得する...
質問  morik  - 04/12/21(火) 13:15 -

引用なし
パスワード
   ▼かろちん さん:
返信ありがとうございます。

WeekDay関数を調べて対象曜日のデータの抽出はできたのですが、抽出したデータを
コンボボックスのプルダウンにてデータを表示する方法がわかりません。

初歩的な質問ばかりで申し訳ございませんが、対策法がありましたらご教授お願い致します。

【4048】Re:2ヶ月後までの指定した曜日を取得する...
回答  MJ  - 04/12/21(火) 13:21 -

引用なし
パスワード
   こんにちは。

コンボの値集合タイプを値リストにして、
値集合ソースには、;区切りで、値をセットされては?

【4049】Re:2ヶ月後までの指定した曜日を取得する...
質問  morik  - 04/12/21(火) 13:58 -

引用なし
パスワード
   ▼MJ さん:
返信ありがとうございます。

MJさんから回答いただいた、
>値集合ソースには、;区切りで、値をセット
ですが、WeekDay関数を調べて対象曜日のデータの抽出したあと値集合ソースに値をセットする方法がわかりません。

抽出したデータを一度何かの変数などに代入しないといけないのでしょうか?

よろしくお願い致します。

【4050】Re:2ヶ月後までの指定した曜日を取得する...
回答  MJ  - 04/12/21(火) 16:33 -

引用なし
パスワード
   どのようなロジックなのか不明ですが、
値リストの場合は、文字列結合(&)を用いて、
値集合ソースにセットされればよろしいかと。

'値集合ソースの初期化
[コンボ].RowSource = ""
'値集合ソースの編集
[コンボ].RowSource = [コンボ].RowSource & 日付変数名 & ";"

というような感じでしょうか。

【4054】Re:2ヶ月後までの指定した曜日を取得する...
質問  morik  - 04/12/22(水) 10:40 -

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

何度も質問してすみません。
やはりソースの書き方がわからず、いろんなところを調べた結果以下のサイトより曜日を返す方法を見つけました。

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdnofftalk/htm/office04062000.asp

しかし、この方法だと一つの曜日しか返されず、今回のように火曜と水曜を返す方法が思い浮かびません。

先ほどのサイトのソースから二つの曜日を返すことは可能なのでしょうか?
よろしくお願い致します。


Function ListDays(fld As Control, id As Variant, Row As Variant, col As Variant, code As Variant) As Variant

  Dim intOffset As Integer
  Dim varRetVal As Variant
 
  Select Case code
   Case acLBInitialize
     varRetVal = True
   Case acLBOpen
     varRetVal = Timer
   Case acLBGetRowCount
     varRetVal = 8
   Case acLBGetColumnCount
     varRetVal = 1
   Case acLBGetColumnWidth
     varRetVal = -1
   Case acLBGetValue
    intOffset = Abs((10 - WeekDay(Now)) Mod 7)
     varRetVal = Format(Now() + intOffset + 7 _
      * Row, "YYYYMMDD")
   Case acLBGetFormat
   Case acLBEnd
  End Select
  ListDays = varRetVal
End Function

【4057】Re:2ヶ月後までの指定した曜日を取得する...
回答  MJ  - 04/12/22(水) 13:11 -

引用なし
パスワード
   以下のような感じでは如何ですか。

  Dim strListDay As String
  Dim datEndDate As Date, datDate As Date
  Dim intOffset As Integer, intWeek As Integer
  
  datEndDate = DateAdd("m", 2, Date)
  intOffset = Abs((10 - Weekday(Date)) Mod 7)
  
  Do
    datDate = Date + intOffset + 7 * intWeek
    
    If datEndDate < datDate Then Exit Do
    
    strListDay = strListDay & Format(datDate, "yyyy/mm/dd") & ";"
    
    datDate = datDate + 1
    
    If datEndDate < datDate Then Exit Do
    
    strListDay = strListDay & Format(datDate, "yyyy/mm/dd") & ";"
    
    intWeek = intWeek + 1
  Loop
  
  [コンボ].RowSource = strListDay

【4058】Re:2ヶ月後までの指定した曜日を取得する...
お礼  morik  - 04/12/22(水) 16:05 -

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

ありがとうございました。

早速教えていただいたソースを実行しましたところ実現することができました。

何度も親切に教えていただきありがとうございました。

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