Excel VBA質問箱 IV

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

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


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

【66037】皿の中の配列の並べ替える方法ってありますか kami 10/7/20(火) 15:38 質問[未読]
【66038】Re:皿の中の配列の並べ替える方法ってあり... Jaka 10/7/20(火) 16:15 発言[未読]
【66041】Re:皿の中の配列の並べ替える方法ってあり... kami 10/7/20(火) 17:33 発言[未読]
【66042】Re:皿の中の配列の並べ替える方法ってあり... SS 10/7/20(火) 17:40 発言[未読]
【66043】Re:皿の中の配列の並べ替える方法ってあり... kami 10/7/20(火) 19:28 発言[未読]
【66045】Re:皿の中の配列の並べ替える方法ってあり... Hirofumi 10/7/20(火) 20:07 回答[未読]
【66046】Re:皿の中の配列の並べ替える方法ってあり... kami 10/7/20(火) 21:12 質問[未読]
【66047】Re:皿の中の配列の並べ替える方法ってあり... Hirofumi 10/7/20(火) 21:22 回答[未読]
【66048】Re:皿の中の配列の並べ替える方法ってあり... Hirofumi 10/7/20(火) 21:29 回答[未読]
【66049】Re:皿の中の配列の並べ替える方法ってあり... kami 10/7/20(火) 22:54 お礼[未読]

【66037】皿の中の配列の並べ替える方法ってありま...
質問  kami  - 10/7/20(火) 15:38 -

引用なし
パスワード
   お世話になります

下記のマクロで初日が月曜になりますが、月毎に曜日は変わりますの
で、このarrayの中の曜日を並べ替える方法はありますか?

用は初日の曜日が変わるようにしたいのですが、どうしたらうまくいき
ますでしょうか?
何卒ご教授のほど宜しくお願いします

Sub test1()
For i = 1 To 5 '変数で月日数ですが今はテストで5日間としてます
x = x + 1
If x > 7 Then x = 1
week = Array("", "月曜日", "火曜日", "水曜日", "木曜日", "金曜

日", "土曜日", "日曜日")
Sheets("sheet1").Copy after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = i & "日"
Cells(1, 2).Value = week(x)
Cells(1, 1).Value = i & "日"
Next i
End Sub

【66038】Re:皿の中の配列の並べ替える方法ってあ...
発言  Jaka  - 10/7/20(火) 16:15 -

引用なし
パスワード
   WeekDay を使って、曜日判定をすればいいんじゃないかと思います。

【66041】Re:皿の中の配列の並べ替える方法ってあ...
発言  kami  - 10/7/20(火) 17:33 -

引用なし
パスワード
   ▼Jaka さん:
>WeekDay を使って、曜日判定をすればいいんじゃないかと思います。
早速のご回答ありがとうございます
ただこれは、その月その日に作成するものではなく、自在に作成するため
その関数が使えないのです。説明不足で申し訳ありませんでした。

【66042】Re:皿の中の配列の並べ替える方法ってあ...
発言  SS  - 10/7/20(火) 17:40 -

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

こんにちは、質問の内容はxの初期値を変えることで設定できると思います。
例えば水曜日から始まる場合xの初期値を2とすれば良いのではないでしょうか。
初期値を自動で設定するとなるともう一工夫必要ですし、曜日配列が必要ないかも知れませんね。


>お世話になります
>
>下記のマクロで初日が月曜になりますが、月毎に曜日は変わりますの
>で、このarrayの中の曜日を並べ替える方法はありますか?
>
>用は初日の曜日が変わるようにしたいのですが、どうしたらうまくいき
>ますでしょうか?
>何卒ご教授のほど宜しくお願いします
>
>Sub test1()
>For i = 1 To 5 '変数で月日数ですが今はテストで5日間としてます
>x = x + 1
>If x > 7 Then x = 1
>week = Array("", "月曜日", "火曜日", "水曜日", "木曜日", "金曜
>
>日", "土曜日", "日曜日")
>Sheets("sheet1").Copy after:=Worksheets(Worksheets.Count)
>>ActiveSheet.Name = i & "月"?
>Cells(1, 2).Value = week(x)
>Cells(1, 1).Value = i & "日"
>Next i
>End Sub

【66043】Re:皿の中の配列の並べ替える方法ってあ...
発言  kami  - 10/7/20(火) 19:28 -

引用なし
パスワード
   ▼SS さん:
>▼kami さん:
>
>こんにちは、質問の内容はxの初期値を変えることで設定できると思います。
>例えば水曜日から始まる場合xの初期値を2とすれば良いのではないでしょうか。
>初期値を自動で設定するとなるともう一工夫必要ですし、曜日配列が必要ないかも知れませんね。
>
>
>>お世話になります
>>
>>下記のマクロで初日が月曜になりますが、月毎に曜日は変わりますの
>>で、このarrayの中の曜日を並べ替える方法はありますか?
>>
>>用は初日の曜日が変わるようにしたいのですが、どうしたらうまくいき
>>ますでしょうか?
>>何卒ご教授のほど宜しくお願いします
>>
>>Sub test1()
>>For i = 1 To 5 '変数で月日数ですが今はテストで5日間としてます
>>x = x + 1
>>If x > 7 Then x = 1
>>week = Array("", "月曜日", "火曜日", "水曜日", "木曜日", "金曜
>>
>>日", "土曜日", "日曜日")
>>Sheets("sheet1").Copy after:=Worksheets(Worksheets.Count)
>>>ActiveSheet.Name = i & "月"?
>>Cells(1, 2).Value = week(x)
>>Cells(1, 1).Value = i & "日"
>>Next i
>>End Sub
ssさん早速のご回答ありがとうございます
また説明不足の件お許しください
各日付でシート作成し一ケ月のブックとしたいのです
ですから
ActiveSheet.Name = i & "日"としたいのです
よろしくお願いします。

【66045】Re:皿の中の配列の並べ替える方法ってあ...
回答  Hirofumi  - 10/7/20(火) 20:07 -

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

Option Explicit

Public Sub Test_2()

  Dim i As Long
  Dim vntMark As Variant
  
  vntMark = Application.InputBox("年月を2010/8の形で入力して下さい")
  If VarType(vntMark) = vbBoolean Then
    Exit Sub
  End If
  If Not IsDate(vntMark) Then
    MsgBox "年月が所定の形では有りません", vbInformation
    Exit Sub
  End If
  
  vntMark = DateValue(vntMark)
  vntMark = DateSerial(Year(vntMark), Month(vntMark), 1)
  
  For i = 1 To Day(DateSerial(Year(vntMark), Month(vntMark) + 1, 0))
    Sheets("sheet1").Copy after:=Worksheets(Worksheets.Count)
    ActiveSheet.Name = i & "日"
    Cells(1, 2).Value = Format(vntMark + i - 1, "aaaa")
    Cells(1, 1).Value = i & "日"
  Next i
    
End Sub

【66046】Re:皿の中の配列の並べ替える方法ってあ...
質問  kami  - 10/7/20(火) 21:12 -

引用なし
パスワード
   ▼Hirofumi さん:
>こんなのでは?
>
>Option Explicit
>
>Public Sub Test_2()
>
>  Dim i As Long
>  Dim vntMark As Variant
>  
>  vntMark = Application.InputBox("年月を2010/8の形で入力して下さい")
>  If VarType(vntMark) = vbBoolean Then
>    Exit Sub
>  End If
>  If Not IsDate(vntMark) Then
>    MsgBox "年月が所定の形では有りません", vbInformation
>    Exit Sub
>  End If
>  
>  vntMark = DateValue(vntMark)
>  vntMark = DateSerial(Year(vntMark), Month(vntMark), 1)
>  
>  For i = 1 To Day(DateSerial(Year(vntMark), Month(vntMark) + 1, 0))
>    Sheets("sheet1").Copy after:=Worksheets(Worksheets.Count)
>    ActiveSheet.Name = i & "日"
>    Cells(1, 2).Value = Format(vntMark + i - 1, "aaaa")
>    Cells(1, 1).Value = i & "日"
>  Next i
>    
>End Sub

hirofumiさん
ありがとうございました
曜日が変わってゆきました。
ただ何故シート名の日付と曜日がズレテしまうのでしょう

【66047】Re:皿の中の配列の並べ替える方法ってあ...
回答  Hirofumi  - 10/7/20(火) 21:22 -

引用なし
パスワード
   >曜日が変わってゆきました。
>ただ何故シート名の日付と曜日がズレテしまうのでしょう

InputBoxに「2010/7」と入れれば1日(木曜日)〜31日(土曜日)が
振られると思いますが?
何が違いますか?

【66048】Re:皿の中の配列の並べ替える方法ってあ...
回答  Hirofumi  - 10/7/20(火) 21:29 -

引用なし
パスワード
   Public Sub Test_2()

  Dim i As Long
  Dim vntMark As Variant
  
  vntMark = Application.InputBox("年月を2010/8の形で入力して下さい")
  If VarType(vntMark) = vbBoolean Then
    Exit Sub
  End If
  If Not IsDate(vntMark) Then
    MsgBox "年月が所定の形では有りません", vbInformation
    Exit Sub
  End If
  
  vntMark = DateValue(vntMark)
  vntMark = DateSerial(Year(vntMark), Month(vntMark), 1)
  
  For i = 1 To Day(DateSerial(Year(vntMark), Month(vntMark) + 1, 0))
    Sheets("sheet1").Copy after:=Worksheets(Worksheets.Count)
    ActiveSheet.Name = i & "日"
    Cells(1, 2).Value = Format(vntMark + i - 1, "aaaa")
'    Cells(1, 1).Value = i & "日"
    Cells(1, 1).Value = vntMark + i - 1
    Cells(1, 1).NumberFormat = "d日"
  Next i
    
End Sub

とすれば解ると思いますが?

【66049】Re:皿の中の配列の並べ替える方法ってあ...
お礼  kami  - 10/7/20(火) 22:54 -

引用なし
パスワード
   ▼Hirofumi さん:
>Public Sub Test_2()
>
>  Dim i As Long
>  Dim vntMark As Variant
>  
>  vntMark = Application.InputBox("年月を2010/8の形で入力して下さい")
>  If VarType(vntMark) = vbBoolean Then
>    Exit Sub
>  End If
>  If Not IsDate(vntMark) Then
>    MsgBox "年月が所定の形では有りません", vbInformation
>    Exit Sub
>  End If
> 
hirofumiさんありがとうございました
お陰さまで何とかなりました
凄いですね私には未だ勉強不足でこのマクロが難しくよくわかりませんが・・・、
ご親切なるご回答、真にありがとうございました。
 
>  vntMark = DateValue(vntMark)
>  vntMark = DateSerial(Year(vntMark), Month(vntMark), 1)
>  
>  For i = 1 To Day(DateSerial(Year(vntMark), Month(vntMark) + 1, 0))
>    Sheets("sheet1").Copy after:=Worksheets(Worksheets.Count)
>    ActiveSheet.Name = i & "日"
>    Cells(1, 2).Value = Format(vntMark + i - 1, "aaaa")
>'    Cells(1, 1).Value = i & "日"
>    Cells(1, 1).Value = vntMark + i - 1
>    Cells(1, 1).NumberFormat = "d日"
>  Next i
>    
>End Sub
>
>とすれば解ると思いますが?

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