Excel VBA質問箱 IV

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

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


11804 / 13645 ツリー ←次へ | 前へ→

【13558】VBAでの曜日の取得 strm 04/5/7(金) 13:23 質問[未読]
【13560】Re:VBAでの曜日の取得 IROC 04/5/7(金) 13:30 回答[未読]
【13561】Re:VBAでの曜日の取得 strm 04/5/7(金) 14:23 質問[未読]
【13562】Re:VBAでの曜日の取得 Asaki 04/5/7(金) 14:34 回答[未読]
【13565】Re:VBAでの曜日の取得 strm 04/5/7(金) 15:00 質問[未読]
【13566】Re:VBAでの曜日の取得 Jaka 04/5/7(金) 15:06 発言[未読]
【13575】Re:VBAでの曜日の取得 Hirofumi 04/5/7(金) 21:06 回答[未読]
【14040】Re:VBAでの曜日の取得 strm 04/5/18(火) 22:32 お礼[未読]

【13558】VBAでの曜日の取得
質問  strm E-MAIL  - 04/5/7(金) 13:23 -

引用なし
パスワード
    VBAを初めて数日のど素人ですが下記について教えていただければ光栄です。
Weekday(ymd, vbSunday)で任意の変数ymdに入力した日付を曜日に変換したいのですがなかなかうまくいきません。変数のymdには2004/05/05といった書式で入力するようにしています。ymdを変更しても同じ数字が出たりします何が悪いか教えてください。
 ゆくゆくはVBAで第2月曜日を求めるものを作りたいと思いますどうすればいいか教えてください。

【13560】Re:VBAでの曜日の取得
回答  IROC  - 04/5/7(金) 13:30 -

引用なし
パスワード
   format(ymd,"aaaa")

ですか?

【13561】Re:VBAでの曜日の取得
質問  strm E-MAIL  - 04/5/7(金) 14:23 -

引用なし
パスワード
   VBAの関数でweekday(date,firstday)で曜日を取得できますが、dateの入力書式は、2004/05/05では曜日を判別できないですか?たとえば日曜なら0とかdateが月曜日なら1という風になるはずですがならないです?どうやったら曜日を判別できますか?

【13562】Re:VBAでの曜日の取得
回答  Asaki  - 04/5/7(金) 14:34 -

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

>変数ymd
は、Date型ですか?

試しに
weekday(date(),vbSunday)
とすると、6:今日は金曜日
weekday(format(dateserial(2004,5,1),"yyyy/mm/dd"),vbSunday)
とかすると、7:今年の5/1は土曜日
と、普通に結果が返ってきますが。

【13565】Re:VBAでの曜日の取得
質問  strm E-MAIL  - 04/5/7(金) 15:00 -

引用なし
パスワード
   素人で回りくどい第2月曜日を求めようと思って下記のようなVBA作りました。
毎月1日の曜日を求めてそこから何日目が第二月曜日というようなものにしました。
しかし、1日の曜日がうまく判定できなくて困っています。
もう少しシンプルなのがあるのでしょうか?


Sub dai2getu()
yyyy = Cells(1, 1)

en = 0
Cells(1, 5) = yyyy & "/" & 1 & "/" & 1
ymd = Cells(1, 5)
you = Weekday(ymd, vbSunday)

dai2 = 1

Select Case you

Case 1
Cells(3, 3) = 8 + 1

Case 2
Cells(3, 3) = 7 + 1
Case 3
Cells(3, 3) = 13 + 1
Case 4
Cells(3, 3) = 12 + 1
Case 5
Cells(3, 3) = 13 + 1
Case 6
Cells(3, 3) = 10 + 1
Case 7
Cells(3, 3) = 9 + 1
End Select
Cells(3, 2) = yyyy & "/" & 1 & "/" & Cells(3, 3)
end sub



【13566】Re:VBAでの曜日の取得
発言  Jaka  - 04/5/7(金) 15:06 -

引用なし
パスワード
   >ゆくゆくはVBAで第2月曜日
見てみてね。
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=37;id=FAQ

【13575】Re:VBAでの曜日の取得
回答  Hirofumi E-MAIL  - 04/5/7(金) 21:06 -

引用なし
パスワード
   こんなのも有るよ
Excelのユーザー定義関数としても使えます
第1引数のvntDateには、調べたい月が含まれる日付を指定
 例 2004年の5月を調べたいなら、2004/05/01〜2004/05/31を指定
第2引数は、調べたい曜日を番号で指定
 日曜=1、月曜=2、、土曜=7とする
第3引数は、調べたい週を番号で指定
戻り値は、シリアル値が帰ります

例えば、5月の第2月曜が何日かを出すなら

= TheFirstWeek("2004/05/01", 2, 2)

とします

Public Function TheFirstWeek(ByVal vntDate As Variant, _
          ByVal lngDayNum As Long, _
          Optional lngNum As Long = 1) As Variant

'  月の第何曜日が何日かを取得
'          vntDate  :知りたい月が含まれる日付(例 2004/5/1)
'                年、月だけが有効
'          lngDayNum :日曜=1、月曜=2、、土曜=7
'          lngNum   :第何週目

  Dim i As Long
  Dim lngYear As Long
  Dim lngMonth As Long
  
  TheFirstWeek = ""
  '日付と認められない場合
  If Not IsDate(vntDate) Then
    Exit Function
  End If
  
  '曜日番号を計算上の番号に変換
  lngDayNum = lngDayNum Mod 7
  '年を取得
  lngYear = Year(vntDate)
  '月を取得
  lngMonth = Month(vntDate)
  '月初を取得
  vntDate = DateSerial(lngYear, lngMonth, 1)
  '第1週の指定曜日の日付を取得
  vntDate = vntDate + ((7 - (vntDate Mod 7) + lngDayNum) Mod 7)
  '指定の週の日付を取得
  vntDate = vntDate + 7 * (lngNum - 1)
  '月内に入る場合は戻り値とする
  If vntDate >= DateSerial(lngYear, lngMonth, 1) _
      Or vntDate >= DateSerial(lngYear, lngMonth + 1, 0) Then
    TheFirstWeek = vntDate
  End If
  
End Function

【14040】Re:VBAでの曜日の取得
お礼  strm E-MAIL  - 04/5/18(火) 22:32 -

引用なし
パスワード
   本当にありがとうございます。無事求めることが出来ました。

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