Excel VBA質問箱 IV

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

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


2725 / 13646 ツリー ←次へ | 前へ→

【66364】WEEKDAYの質問 初心者Q 10/8/27(金) 17:24 質問[未読]
【66370】Re:WEEKDAYの質問 UO3 10/8/28(土) 10:05 発言[未読]
【66376】Re:WEEKDAYの質問 初心者Q 10/8/30(月) 9:21 質問[未読]
【66371】Re:WEEKDAYの質問 Hirofumi 10/8/28(土) 10:28 回答[未読]
【66377】Re:WEEKDAYの質問 初心者Q 10/8/30(月) 9:22 お礼[未読]

【66364】WEEKDAYの質問
質問  初心者Q  - 10/8/27(金) 17:24 -

引用なし
パスワード
   WEEKDAY関数で質問があるので教えて下さい。

EXCELのシートにSHEET名シートで1から31の日別の
枠を作成して準備しています。

また、画面から月条件を取得しています。

以下の方法で、月+日から曜日を取得したいのですが
うまく表示されません。
表示する曜日は、(月)とかにて取得したい

どなたかアドバイスお願いします。

  Dim q As Long
  Dim r As Long
  Dim s As Long
 
 
  Dim wkq As Date
  Dim wkqq As String
 
  Dim wkq1 As String
  Dim wkq2 As String
  Dim wkq3 As String

  '●曜日表示処理
 
  s = 1     '日の変数用
  r = 4     '表示する場所用
  wkq1 = wk2   '月を取得
 
     Sheets("シート").Select
     Range("a2").Select
   
   Do Until s >= 32
      
    wkq2 = s
    wkq3 = "日"
   
    wkq = wkq1 + wkq2 + wkq3   '月日を取得
     
    Sheets("シート").Select
    Cells(2, r).Select
    ActiveCell.FormulaR1C1 = _
      "=text(weekday(wkq),""(aaa)"") " '式
      
   
   Sheets("シート").Select
   Cells(2, r).Select
   ActiveCell.FormulaR1C1 = wkqq
   
   r = r + 1
   s = s + 1
  
   Loop

【66370】Re:WEEKDAYの質問
発言  UO3  - 10/8/28(土) 10:05 -

引用なし
パスワード
   ▼初心者Q さん:
おはようございます。

回答ではありません。

まず、シートの1から31の日別の枠がどこにあるのか、
ちゃんと書いてください。コードを読めば、あぁ、○列の□行目から
縦に並んでいるんだな、あるいは横に並んでいるんだなとわかるのですが
それを回答者にさせるのは、どうでしょうねぇ。

次に、曜日を、どこにセットするのか、それも、ちゃんと言葉で説明してください。
これも、コードを読んで、あぁ、ここにセットするのかと判断させるのですか?

それと・・・
年はどのように考えていますか?
無条件に31日まで処理するようですけど、小の月だったらどうしますか?

【66371】Re:WEEKDAYの質問
回答  Hirofumi  - 10/8/28(土) 10:28 -

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

Option Explicit

Public Sub Test()
 
'  ●曜日表示処理
 
'  Dim q As Long
  Dim r As Long
'  Dim s As Long
  
'  Dim wkq As Date
  Dim wkq As Long
'  Dim wkqq As String
  
'  Dim wkq1 As String
'  Dim wkq2 As String
'  Dim wkq3 As String
  
  Dim wk2 As Variant
  Dim wksMark As Worksheet
  
  '月を年を入れて、"2010/8"の形で取得
  wk2 = Application.InputBox(Prompt:="月を年を入れて、2010/8の形で入力", Type:=2)
  If VarType(wk2) = vbBoolean Then
    MsgBox "マクロがキャンセルされました", vbInformation
    Exit Sub
  End If
  If Not IsDate(wk2) Then
    MsgBox "入力値が指定形式として認めれません", vbInformation
    Exit Sub
  End If
  '入力をシリアル値に変換
  wk2 = DateValue(wk2)
  '入力月の1日とする
  wk2 = DateSerial(Year(wk2), Month(wk2), 1)
  '入力月の前月末日を取得
  wkq = wk2 - 1
  
'  s = 1     '日の変数用
'  r = 4     '表示する場所用
'  wkq1 = wk2   '月を取得
  
'  Sheets("シート").Select
'  Range("a2").Select
  Set wksMark = Worksheets("シート")
  
'  Do Until s >= 32
'
'    wkq2 = s
'    wkq3 = "日"
'
'    wkq = wkq1 + wkq2 + wkq3   '月日を取得
'
'    Sheets("シート").Cells(2, r).FormulaR1C1 = "=text(weekday(wkq),""(aaa)"") "         '式
'
'    Sheets("シート").Cells(2, r).FormulaR1C1 = wkqq
'
'    r = r + 1
'    s = s + 1
'
'  Loop

  '入力月の1日から末日まで繰り返し
  For r = 1 To Day(DateSerial(Year(wk2), Month(wk2) + 1, 0))
    '曜日を代入
    wksMark.Cells(2, r).Value = Format(wkq + r, "(aaa)")
'    wksMark.Cells(3, r).Value = r '?????
  Next r
  
  Set wksMark = Nothing

End Sub

【66376】Re:WEEKDAYの質問
質問  初心者Q  - 10/8/30(月) 9:21 -

引用なし
パスワード
   おはようございます。

年の判定は、today関数から年を取得して処理する予定です。

日を判定するのは、D3に1、E3に2,F3に3と31個指定しています。
曜日を出力するのは、
D3ならD2に、E3ならE2に曜日を出力するようにします。

以上補足を入れます。

【66377】Re:WEEKDAYの質問
お礼  初心者Q  - 10/8/30(月) 9:22 -

引用なし
パスワード
   処理内容を確認してみます。
ありがとうございました。

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