Excelマクロで質問です。 月、火木、水金、土、アイスというシートがあります。 インプットボックスに入力した数字を月(m)として、その月の日にちでブックを作りたいです。
Excelマクロで質問です。 月、火木、水金、土、アイスというシートがあります。 インプットボックスに入力した数字を月(m)として、その月の日にちでブックを作りたいです。 月曜日なら"月"と"アイス"のシートだけを日にちの名前を付けて保存し、"アイス"シートのセルD6に日にち(mmdd)を入れたいです。 名前を付けること、セルD6に日付を入れることは出来たのですが、シートの選択が出来ません。 ステップインで見てみると、 違う曜日のIfも通っているようで、 1番最後が残っているようです。 イミディエイトウインドウで見ましたが、週の扱い方が分かりません。 また、日曜日もブックが出来てしまいます。日曜日は何もしないとしたいです。 文字数制限の為、削除しているので不備がありましたら申し訳ございません。 よろしくお願いします。 Sub 作成() Application.DisplayAlerts = False Dim mymon As Integer Dim fpath As String Dim mypath As String Dim fday As Date, lday As Date Dim i As Long Dim wb As Workbook Dim ws As Worksheet mymon = Application.InputBox("月を入力", Type:=1) fpath = mymon mypath = ThisWorkbook.Path & "\" & fpath & "\" fday = DateSerial(Year(Date), mymon, 1) '月初 lday = DateSerial(Year(Date), mymon + 1, 0) '月末 For i = fday To lday If Weekday(i) = vbMonday Then Worksheets(Array("月", "アイス")).Select ActiveWindow.SelectedSheets.Copy ActiveWorkbook.SaveAs Filename:=mypath & Format(i, "d") & ".xlsx", FileFormat:=xlOpenXMLWorkbook Set wb = ActiveWorkbook Set ws = wb.Worksheets("アイス") ws.Select ws.Range("D6").Value = Format(i, "mm月dd日") wb.Save wb.Close False End If If Weekday(i) = vbWednesday Or vbFriday Then Worksheets(Array("水金", "アイス")).Select ActiveWindow.SelectedSheets.Copy ActiveWorkbook.SaveAs Filename:=mypath & Format(i, "d") & ".xlsx", FileFormat:=xlOpenXMLWorkbook Set wb = ActiveWorkbook Set ws = wb.Worksheets("アイス") ws.Select ws.Range("D6").Value = Format(i, "mm月dd日") wb.Save wb.Close False End If If Weekday(i) = vbSunday Then End If Next i Application.DisplayAlerts = True End Sub
Excel | Visual Basic・45閲覧
ベストアンサー
>違う曜日のIfも通っているようで、 if A or B thenは Aがtrue または Bがtrue という意味なので If Weekday(i) = vbWednesday Or vbFriday Then と書くと 「Weekday(i)が水曜日」がtrue または「vbFriday」がtrue となってしまい、vbFriday=5なので常にtrueになってしまいます If Weekday(i) = vbWednesday Or Weekday(i) =vbFriday Then にします 火木も(多分)同じです >日曜日は何もしないとしたいです。 なら If Weekday(i) = vbSunday Then End If はまるごと削除で良いです
質問者からのお礼コメント
出来ました!!ありがとうございます!
お礼日時:6/29 17:46