Excel VBA質問箱 IV

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

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


12679 / 13644 ツリー ←次へ | 前へ→

【9237】指定した年月の曜日を取得する サムライ 03/11/25(火) 13:27 質問
【9238】Re:指定した年月の曜日を取得する ぴかる 03/11/25(火) 14:21 回答
【9239】Re:指定した年月の曜日を取得する INA 03/11/25(火) 14:24 回答
【9240】Re:指定した年月の曜日を取得する サムライ 03/11/25(火) 14:59 質問
【9241】Re:指定した年月の曜日を取得する INA 03/11/25(火) 15:14 回答
【9242】Re:指定した年月の曜日を取得する サムライ 03/11/25(火) 15:28 お礼

【9237】指定した年月の曜日を取得する
質問  サムライ  - 03/11/25(火) 13:27 -

引用なし
パスワード
   例えば、2003/12(2003年12月)の「月、水、金」曜日を
セルに取得したいのですがどうすれば良いのでしょうか?

私が考えたのは、フォームを作り
TextBox1に年を入力
TextBox2に月を入力
月、水、金だと週3日の4週から5週と考えて、
セルの範囲をA2:A17(16行)にし、このセルに
12月1日(月)
12月3日(水)
12月5日(金)
12月8日(月)
  ・
  ・
こんな感じで表示させたいと思っていました。
もし、このやり方の方がいいよ?という考えを
お持ちの方は是非ご教授下さい。お願い致します!

【9238】Re:指定した年月の曜日を取得する
回答  ぴかる  - 03/11/25(火) 14:21 -

引用なし
パスワード
   サムライさん、こんにちは。

InputBoxでやってみました。どやろ?

Sub test()

Dim 年 As Long
Dim 年2 As Long
Dim 月 As Integer
Dim 月2 As Integer
Dim カウント As Integer

  With Range("A2:A17")
    .NumberFormatLocal = "m""月""d""日""(aaa)"
    .ClearContents
  End With
  
  年 = InputBox("年を入力して下さい。")
  月 = InputBox("月を入力して下さい。")
  カウント = 0
  
  If 月 = 12 Then
    月2 = 1
    年2 = 年 + 1
  Else
    月2 = 月 + 1
    年2 = 年
  End If
  
  For I = CDate(年 & "/" & 月 & "/1") To CDate(年2 & "/" & 月2 & "/1") - 1
    If (Weekday(I) = 2) Or (Weekday(I) = 4) Or (Weekday(I) = 6) Then
      Cells(カウント + 2, 1) = I
      カウント = カウント + 1
    End If
  Next

End Sub

【9239】Re:指定した年月の曜日を取得する
回答  INA  - 03/11/25(火) 14:24 -

引用なし
パスワード
   試しに作ってみましたので、参考にして下さい。

Sub Sample()
Dim myYear As Long
Dim myMonth As Long
Dim myDay As Date
Dim i As Long

  Columns("A").ClearContents
  
  myYear = Application.InputBox("年を西暦4桁で入力して下さい。 例) 2003 ", Type:=1)
  
  If Len(CStr(myYear)) <> 4 Then
    MsgBox myYear & " : 入力が不正です。", 48
    Exit Sub
  End If
  
  myMonth = Application.InputBox("月を2桁で入力して下さい。 例) 01 ", Type:=1)

  If Len(CStr(myMonth)) <> 2 Then
    MsgBox myMonth & " : 入力が不正です。", 48
    Exit Sub
  End If
  
  i = 1
  
  Do
    myDay = CDate(myYear & "/" & myMonth & "/" & i)
    
    If Format(myDay, "aaa") = "月" Or _
      Format(myDay, "aaa") = "水" Or _
      Format(myDay, "aaa") = "金" Then
      
      Range("A65536").End(xlUp).Offset(1).Value = _
      Format(myDay, "mm月dd日") & "(" & Format(myDay, "aaa") & ")"
    End If
    
    i = i + 1
    If Day(myDay + 1) = 1 Then Exit Do
  Loop

  Range("A1").Value = "日付"
  Columns("A").AutoFit
  
End Sub

【9240】Re:指定した年月の曜日を取得する
質問  サムライ  - 03/11/25(火) 14:59 -

引用なし
パスワード
   ぴかるさん、INAさん返答ありがとうございます。

初歩的な質問ですがInputBoxとは何でしょうか?
その他のコントロールで出す(?)と思いましたが、
よく分からないのですよ。
すみませんが、教えてもらえないでしょうか?

【9241】Re:指定した年月の曜日を取得する
回答  INA  - 03/11/25(火) 15:14 -

引用なし
パスワード
   >初歩的な質問ですがInputBoxとは何でしょうか?
EXCELに標準で組み込まれている入力できるダイアログの事で、
入力可能タイプのメッセージボックスのようなものです。

ヘルプで、InputBox関数とInputBoxメソッドを読んでみて下さい。

入力する型が指定できるので、基本的にはInputBoxメソッドを使います。

【9242】Re:指定した年月の曜日を取得する
お礼  サムライ  - 03/11/25(火) 15:28 -

引用なし
パスワード
   INAさん、ぴかるさん

大変分かりやすく説明してくださって
お蔭様で出来ました。
ありがとうございました。

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