• ベストアンサー

エクセルVBA来年成人式を迎える人の抜出

お世話になります。Range("C3")からLastRowまで生年月日が入りRange(”D3")からLastRowまで氏名が入っています。ここから来年成人式を迎える方のデータを新規ブックに抜出したいのですが何方かご教示お願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 回答No.3 >下記の生年月日で試しましたが、次の成人式に参加する資格のある方はリストの中には見当たりません。と出ました。  申し訳御座いません。私のミスです。  本来であれば、 学齢方式では「前回の成人式が行われた年の4月2日」~「次回の成人式が行われる年の4月1日」の期間内に20歳の誕生日を迎えられる方を該当者とし、 年齢方式では「前回の成人の翌日」~「次回の成人の日」の期間内に20歳の誕生日を迎えられる方を該当者 としなければならないところを、誤って 学齢方式では「前回の成人式が行われた年の4月2日」~「次回の成人式が行われる年の4月1日」の期間内に"誕生された方"を該当者とし、 年齢方式では「前回の成人の翌日」~「次回の成人の日」の期間内に"誕生された方"を該当者 としてしまっておりました。  下記に改善したVBAの構文を記述致しましたので御確認下さい。  尚、御質問文では >来年成人式を迎える方のデータを という事でしたが、下記のVBAのマクロでは「『前回の成人式』の次に行われる成人式に参加される資格のある方」、即ち 学齢方式では「マクロを起動させた日が『4月1日以外の日』の場合は『前回の4月2日』~『次回の4月1日』の期間」、「マクロを起動させた日が『4月1日当日』の場合は『前回の4月2日』~『本日』の期間」に20歳の誕生日を迎えられる方を該当者とし、 年齢方式では「マクロを起動させた日が『成人の日以外の日』の場合は『前回の成人の日』~『次回の成人の日』の期間」、「マクロを起動させた日が『成人の日当日』の場合は『前回の成人の日』~『本日』の期間」に20歳の誕生日を迎えられる方を該当者としております。  ですから、例えばマクロを起動させた日が1月6日の場合には、「今年の成人の日」がやって来る前なのですから、 >来年成人式を迎える方のデータ ではなく、「今年成人式を迎える方のデータ」が出力される様になっております。  また、2月や3月にマクロを起動させた場合には、「今年の成人の日」は過ぎているのに対し、「今年の4月1日」はまだやって来ていないのですから、「学齢方式」を選択した場合は「今年成人式を迎える方のデータ」が、「年齢方式」を選択した場合は「来年成人式を迎える方のデータ」が、それぞれ出力される様になっております。 Sub QNo9259564_エクセルVBA来年成人式を迎える人の抜出() Const DateColumn As String = "C" '誕生日が入力されている列の列番号 Const NameColumn As String = "D" '氏名が入力されている列の列番号 Const ItemRow As Long = 2 '表の項目名が入力されている行の行番号 Const PasteCell As String = "A1" '表の貼り付け先のセル範囲の中で、左上の隅にあるセルのセル番号 Dim i As Long, LastRow As Long, buf As Variant, myRange As Range _ , myBook As Workbook, TermStart As Date, TermLast As Date LastRow = Range(DateColumn & Rows.Count).End(xlUp).row If LastRow <= ItemRow Then MsgBox "処理すべきデータが見当たりませんません。" & vbCrLf _ & "マクロを終了します。", vbExclamation, "データ無し" Exit Sub End If Select Case MsgBox("学齢方式を使用しますか?" _ & vbCrLf & vbCrLf & "学齢方式とは" & vbCrLf _ & "「前回の成人式が行われた年の4月2日」" & vbCrLf _ & "  ~「次回の成人式が行われる年の4月1日」" & vbCrLf _ & "の期間内に20歳の誕生日を迎えられる方を式典の" & vbCrLf _ & "参加対象にする方式です。" & vbCrLf & vbCrLf _ & "その他の方式としては年齢方式があり、こちらは" & vbCrLf _ & "「前回の成人の日の翌日」~「次回の成人の日」" & vbCrLf _ & "の期間内に20歳の誕生日を迎えられる方を式典の" & vbCrLf _ & "参加対象にする方式です。" & vbCrLf & vbCrLf & vbCrLf _ & "[はい] : 学齢方式で式典参加者を選定します" & vbCrLf _ & "[いいえ] : 年齢方式で式典参加者を選定します" & vbCrLf _ & "[キャンセル] : 処理を中止してマクロを終了します" _ , vbYesNoCancel + vbQuestion, "選定方式選択") Case vbYes buf = Year(Date) + (Date < DateSerial(Year(Date), 4, 2)) TermStart = DateSerial(buf - 20, 4, 2) TermLast = DateSerial(buf - 19, 4, 1) Case vbNo buf = Year(Date) + (Date < DateSerial(Year(Date), 1, 16 _ - Weekday(DateSerial(Year(Date), 1, 14), vbMonday))) TermStart = DateSerial(buf - 20, 1, 16 _ - Weekday(DateSerial(buf, 1, 14), vbMonday)) TermLast = DateSerial(buf - 19, 1, 15 _ - Weekday(DateSerial(buf + 1, 1, 14), vbMonday)) Case vbCancel Exit Sub End Select Set myRange = Range(DateColumn & ItemRow & "," & NameColumn & ItemRow) For i = ItemRow + 1 To LastRow buf = Range(DateColumn & i).Value If buf >= TermStart And buf <= TermLast Then _ Set myRange = Union(myRange, Range(DateColumn & i & "," & NameColumn & i)) Next i If Intersect(myRange, Range(DateColumn & ItemRow + 1 & ":" & NameColumn & LastRow)) Is Nothing Then MsgBox "次の成人式に参加する資格のある方はリストの中には見当たりません。" _ & vbCrLf & "マクロを終了します。", vbInformation, "該当者無し" Else With Application buf = .SheetsInNewWorkbook .SheetsInNewWorkbook = 1 .ScreenUpdating = False .Calculation = xlManual End With Set myBook = Workbooks.Add myRange.Copy With myBook.Sheets(1).Range(PasteCell) .PasteSpecial xlPasteFormats .PasteSpecial xlPasteColumnWidths .PasteSpecial xlPasteValues End With With Application .CutCopyMode = False .SheetsInNewWorkbook = buf .Calculation = xlCalculationAutomatic .ScreenUpdating = True End With End If End Sub  

nebikitorikai
質問者

お礼

処理できました。感激です 私にはまだまだ未熟でこのような構文を書けるには程遠いですが少しでも近づけるように勉強します、有難うございました。

その他の回答 (3)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 下記のVBAのマクロでは如何でしょうか。 Sub QNo9259564_エクセルVBA来年成人式を迎える人の抜出() Const DateColumn As String = "C" '誕生日が入力されている列の列番号 Const NameColumn As String = "D" '氏名が入力されている列の列番号 Const ItemRow As Long = 2 '表の項目名が入力されている行の行番号 Const PasteCell As String = "A1" '表の貼り付け先のセル範囲の中で、左上の隅にあるセルのセル番号 Dim i As Long, LastRow As Long, buf As Variant, myRange As Range _ , myBook As Workbook, TermStart As Date, TermLast As Date LastRow = Range(DateColumn & Rows.Count).End(xlUp).row If LastRow <= ItemRow Then MsgBox "処理すべきデータが見当たりませんません。" & vbCrLf _ & "マクロを終了します。", vbExclamation, "データ無し" Exit Sub End If Select Case MsgBox("学齢方式を使用しますか?" & vbCrLf & vbCrLf _ & "学齢方式とは" & vbCrLf _ & "「前回の成人式が行われた年の4月2日」" & vbCrLf _ & "  ~「次回の成人式が行われる年の4月1日」" & vbCrLf _ & "の期間内に成人される方を式典参加の対象にする方式です。" _ & vbCrLf & vbCrLf _ & "その他の方式としては年齢方式があり、こちらは" & vbCrLf _ & "「前回の成人の日」~「次回の成人の日」" & vbCrLf _ & "の期間内に成人される方を式典参加の対象にする方式です。" _ & vbCrLf & vbCrLf & vbCrLf _ & "[はい] : 学齢方式で式典参加者を選定します" & vbCrLf _ & "[いいえ] : 年齢方式で式典参加者を選定します" & vbCrLf _ & "[キャンセル] : 処理を中止してマクロを終了します" _ , vbYesNoCancel + vbQuestion, "選定方式選択") Case vbYes buf = Year(Date) + (Date < DateSerial(Year(Date), 4, 2)) TermStart = DateSerial(buf, 4, 2) TermLast = DateSerial(buf + 1, 4, 1) Case vbNo buf = Year(Date) + (Date < DateSerial(Year(Date), 1, 16 _ - Weekday(DateSerial(Year(Date), 1, 14), vbMonday))) TermStart = DateSerial(buf, 1, 16 _ - Weekday(DateSerial(buf, 1, 14), vbMonday)) TermLast = DateSerial(buf + 1, 1, 15 _ - Weekday(DateSerial(buf + 1, 1, 14), vbMonday)) Case vbCancel Exit Sub End Select Set myRange = Range(DateColumn & ItemRow & "," & NameColumn & ItemRow) For i = ItemRow + 1 To LastRow buf = Range(DateColumn & i).Value If buf >= TermStart And buf <= TermLast Then _ Set myRange = Union(myRange, Range(DateColumn & i & "," & NameColumn & i)) Next i If Intersect(myRange, Range(DateColumn & ItemRow + 1 & ":" & NameColumn & LastRow)) Is Nothing Then MsgBox "次の成人式に参加する資格のある方はリストの中には見当たりません。" _ & vbCrLf & "マクロを終了します。", vbInformation, "該当者無し" Else With Application buf = .SheetsInNewWorkbook .SheetsInNewWorkbook = 1 .ScreenUpdating = False .Calculation = xlManual End With Set myBook = Workbooks.Add myRange.Copy With myBook.Sheets(1).Range(PasteCell) .PasteSpecial xlPasteFormats .PasteSpecial xlPasteColumnWidths .PasteSpecial xlPasteValues End With With Application .CutCopyMode = False .SheetsInNewWorkbook = buf .Calculation = xlCalculationAutomatic .ScreenUpdating = True End With End If End Sub

nebikitorikai
質問者

お礼

いつもご教示有難うございます。

nebikitorikai
質問者

補足

有難うございますお世話になります。下記の生年月日で試しましたが、次の成人式に参加する資格のある方はリストの中には見当たりません。と出ました。 A  B  C   D    E No. 班 生年月日  氏名 年齢 1 1 1995/11/4 ふふふ 21歳0ヶ月 2 2 1996/11/4 ひひひ 20歳0ヶ月 3 3 1997/11/4 へへへ 19歳0ヶ月 4 4 1998/11/4 ほほほ 18歳0ヶ月 どこが悪いのでしょうか?

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.2

こんにちは C2:D2に項目名が有るとして、抽出日付は随時変更して貰えるなら、 Sub test()   Dim LastRow As Long   Dim wBK   As Workbook   Dim r    As Range      LastRow = Range("C" & Rows.Count).End(xlUp).Row   With Range("C2:D" & LastRow)     .AutoFilter Field:=1, _       Criteria1:=">1997/1/11", _       Operator:=xlAnd, _       Criteria2:="<1998/1/10"     Set r = .Parent.AutoFilter.Range     Set wBK = Workbooks.Add     r.Copy wBK.Worksheets(1).Range("A1")     If wBK.Worksheets(1).Range("A1") _         .CurrentRegion.Rows.Count = 1 Then       wBK.Saved = True       wBK.Close     End If     .Parent.AutoFilterMode = False   End With End Sub

nebikitorikai
質問者

お礼

ushi2015 様のご教示を今勉強中です、有難うございます。結果、補足を入力するかもしれません、その時には宜しくお願いします。

  • maiko0333
  • ベストアンサー率19% (840/4403)
回答No.1

来年成人式を迎えるのは1/12から来年1/9までです。 この日付は毎年変わりますのでご注意。 地域によっては学年で成人式をやっているところもあります。 ちょっとプログラムにするのはややこしいかな。

nebikitorikai
質問者

お礼

有難うございました

関連するQ&A

  • VBAエクセル、項目検索からデータ抽出

    お世話になります。早速ですがsheets("データ元").Range("A2")にNo.、Range("B2")に日付、Range("C2")に曜日、Range("D2")に項目、Range("E2")に詳細、Range("F2")に金額があり A3~F3以下LastRowまでデータが入っています。 Range("D3")以下LastLowの中から1会社名を検索するとその会社名すべてのデータが新規ブックSheet1に書き出され、そのシートのRange("G3")に合計額を出す構文をどなたかご教示ください宜しくお願いします。エクセル2003と2013を各パソコンで使用しています。

  • エクセルのフォームのVBAについて

    VBAがまったくわからないのに参考書を見て高度な事に挑戦しています フォームは作れてフォームをクリックやら入力やらして作ったOKボタンを押すと シート2のA1B1C1‥の列に入力文字だけが羅列されます。 しかし次にやろうとするとA2B2C2‥と下に行かず又A1B1C1‥の列の文字が変更になり続きません。何がいけないのでしょうか? Sub 入力() Dim LastRow As Long With Worksheets("sheet2") LastRow = Worksheets("sheet2").Range("A" & Rows.Count).End(xlUp).Row .Range("A" & LastRow).Value = Worksheets("sheet1").Range("A5").Value .Range("B" & LastRow).Value = Worksheets("sheet1").Range("A7").Value .Range("C" & LastRow).Value = Worksheets("sheet1").Range("A8").Value .Range("D" & LastRow).Value = Worksheets("sheet1").Range("A10").Value End With End Sub と参考書とおりいれたのですが‥。教えて下さい。

  • Excel VBA 他のブックへ値を返す

    Excelで「備品」というブックと「不用品報告」というブックを作り、「備品」の方でボタンをクリックすると「不用品報告」の"一覧"というシートに順々に入力されるように組んでみました。 ※「備品」「不用品報告」は同じフォルダに入っています。 Application.ScreenUpdating = False Dim thisBook As Workbook Dim workBook1 As Workbook Dim lastrow2 As Long Set thisBook = ThisWorkbook Set workBook1 = Workbooks.Open(thisBook.Path & "\不用品報告.xlsx") lastrow2 = workBook1.Worksheets("廃棄一覧").Range("C" & Rows.Count).End(xlUp).Row + 1 workBook1.Worksheets("廃棄一覧").Range("G" & lastrow2).Value = thisBook.Worksheets("一覧").Cells(ActiveCell.Row, 15).Value workBook1.Worksheets("廃棄一覧").Range("H" & lastrow2).Value = "報告する" workBook1.Close SaveChanges:=True Application.ScreenUpdating = True MsgBox "廃棄処理が完了しました。不用品報告ファイルの一覧にデータが追加されています。", vbInformation, "廃棄処理" End If という形です。 「不用品報告」ブックにデータが飛ぶのですが、ActiveCell.Rowと設定しているにも関わらず一定の行のデータしか飛んでくれません。 ※例 5行目のデータを飛ばしたいのに(アクティブなセルは5行目のセルになっている状態)7行目のデータが入る という感じです。 違うブックにデータを飛ばすときには「ActiveCell~」は使えないのでしょうか。もしくはどこか不具合があるのでしょうか。 お詳しい方がいらっしゃいましたら、ご教授願います。

  • エクセルVBA  どうしても動きません。

    お世話になります。 なかなか上達しない超初心者です。 ↓↓ですが、Activesheetにすると動くのに、シート名を元々存在するシート”実験"に指定すると動きません(データ内容はまったく同じで、A列に色んな名前が入っていて、重複しているとC列に重複と入力します)。 2日間試行錯誤したのですが、やっぱり動かず・・・ ちなみに、Activateにするとアクティブになるし、CurrentRegionも選択できるのに なんでうごかないんでしょうか・・・ 何卒ご指導くださいませ。よろしくお願いいたします!!!!!! Sub Test2() With Sheets("実験").Range("A1").CurrentRegion Dim i As Long Dim LastRow As Long LastRow = Range("A" & Rows.Count).End(xlUp).Row For i = 1 To LastRow If WorksheetFunction.CountIf(Range("A:A"), Cells(i, 1)) > 1 Then Cells(i, 3) = "重複" End If Next i End With End Sub Sheets("実験")をActivesheetに変えると別のシートがしっかり動いてくれます・・・が、なんとしてでも”実験”シートに動いていただきたいです・・・。

  • エクセルVBA年月日からその年&月の合計

    いつもお世話になっています。 下記の質問をお分かりの方ご教示ください Range("A2")Range("B2").........................Range("L2")とそれぞれA~LまでありA2にはNo.、B2には年月日、....................L2には金額という項目があります。それぞれのその入力数は現在7年分入力されていますが進行中です。この入力された年月日からinputBoxを使って何年何月と検索したらその答えを新規ブックに何年何月分の合計を出力できるようにしたいのですが何方か宜しくお願いします、ちなみにオフィースは2003です。宜しくお願いします

  • Excel VBAについて

    Excel VBAについて教えて頂きたいのですが、 Sub test() Dim lastrow, r, i As Long Dim sh1, sh2 As String Dim ws As Worksheet lastrow = Cells(Rows.count, "D").End(xlUp).row For r = 7 To lastrow '7 For i = 1 To lastrow '4 sh1 = ActiveSheet.Cells(r, 4) ActiveSheet.Cells(r, 20) = _ Application.CountIfs(Sheets(sh1).Range("D:D"), Range("H3") & Range("I3"), Sheets(sh1).Range("K:K"), "<=3") _ / Application.CountIf(Sheets(sh1).Range("D:D"), Range("H3") & Range("I3")) ActiveSheet.Cells(r, 21) = _ Application.CountIfs(Sheets(sh1).Range("C:C"), Range("F3"), Sheets(sh1).Range("K:K"), "<=3") _ / Application.CountIf(Sheets(sh1).Range("C:C"), Range("F3")) ActiveSheet.Cells(r, 22) = _ Application.CountIfs(Sheets(sh1).Range("E:E"), Range("K3"), Sheets(sh1).Range("K:K"), "<=3") _ / Application.CountIf(Sheets(sh1).Range("E:E"), Range("K3")) Sheets(sh1).Range("A3:R3").AutoFilter Field:=4, Criteria1:=Range("H3") & Range("I3") ActiveSheet.Cells(r, 15) = Application.Subtotal(105, Sheets(sh1).Range("O:O")) Sheets(sh1).Range("A3:R3").AutoFilter Field:=4, Criteria1:=Range("H3") & Range("I3") - 200 ActiveSheet.Cells(r, 18) = Application.Subtotal(105, Sheets(sh1).Range("O:O")) Sheets(sh1).Range("A3:R3").AutoFilter Field:=4, Criteria1:=Range("H3") & Range("I3") + 200 ActiveSheet.Cells(r, 19) = Application.Subtotal(105, Sheets(sh1).Range("O:O")) For Each ws In Worksheets ws.AutoFilterMode = False Next Next Next End Sub このコードは ActiveSheetで実行すると D列の7行目から最終行までに入力されている名前のシート(名前=シートがあります) その、シートの参照先で C,D,E列がcountif関数を利用して O列がSubtotal関数を利用しています。 このコードでもやりやいことは実行できるのですが、 時間がかかりすぎてしまいます。 約20件あり約2分ほどかかります。パソコンによっては倍ほど時間がかかるかもです。 そこでなのですが、 もっと処理のスピードを上げたいのですが、 可能でしょうか? 可能ならそのやり方をご教示ください。 よろしくお願い致します。

  • VBA年月日から5年以上のデータ新規ブックに出力

    お世話になります、A3日付...............L3合計とあります. A4からLastRowまでの日付の中から5年以上経過したAからLまでのデータを新規ブックのsheet1に書き出したいのですがご存知の方ご教示ください、宜しくお願いします。

  • エクセルVBAで困っています。

    Excell2003でマクロを作成したのですが、思うような結果が出なくて困っています。 どなたかお力をお貸しください。 お願いします。 【作成したマクロ】 Sub テスト()   myPath = ThisWorkbook.Path   buf = Dir(myPath & "¥データ¥" & "*.xls")   Do While buf <> ""     Target = "'" & myPath & "[" & buf & "]Sheet1'!R1C1"     i = i + 1     Cells(i, 1) = buf     Cells(i, 2) = ExecuteExcel4Macro(Target)     buf = Dir()   Loop End Sub 【設定状況】 ・デスクトップ上に "サンプル.xls" があり、ThisWorkBookに上記マクロを書きました。 ・デスクトップ上に "データ" というフォルダがあり、その中に、"Book1.xls" と "Book2.xls" があります。 ・"Book1.xls" のSheet1のRange("A1")には "あいうえお" が入力されています。 ・"Book2.xls" のSheet1のRange("A1")には "かきくけこ" が入力されています。 【マクロ実行結果】 ・Range("A1") ・・・ Book1.xls ・Range("B1") ・・・ #REF! ・Range("A2") ・・・ Book2.xls ・Range("B2") ・・・ #REF! となってしまいます。 【求めたい結果】 ・Range("A1") ・・・ Book1.xls ・Range("B1") ・・・ あいうえお ・Range("A2") ・・・ Book2.xls ・Range("B2") ・・・ かきくけこ よろしくお願いします。

  • VBAでオーバーフローが出て困っています(エクセル2000です)

    自動売買ロボット作成マニュアルという本のなかに株価をダウンロードするためのプログラムとしてソースが書かれているのですが、オーバーフローとなってしまい、実行できません。lastrow = (Range("B4").End(xlDown).Row + 1)のところでオーバーフローを起こします。この文章だけでは対処できないと思いますのでプログラムを写します。 恐れ入りますが、お助けください。 Sub Calc() Dim code As String Dim data_length As Integer, date_temp As Date Dim day_s As Integer, month_s As Integer, year_s As Integer Dim day_e As Integer, month_e As Integer, year_e As Integer Dim row_length As Integer code = input_temp(2) data_length = -100 date_temp = DateAdd("d", data_length, Now) day_e = Day(Now) month_e = Month(Now) year_e = Year(Now) day_s = Day(date_temp) month_s = Month(date_temp) year_s = Year(date_temp) Range("B4:R65000").ClearContents For i = 0 To Abs(data_length) * 0.65 Step 50 If i = 0 Then lastrow = "4" For wtbl = 19 To 25 url = "URL;http://table.yahoo.co.jp/t?s=" & code & "&a=" & month_s & "&b=" & day_s & "&c=" & year_s & "&d=" & month_e & "&e=" & day_e & "&f=" & year_e & "&g=d&q=t&y=" & i & "&z=" & code & "&x=.csv" Call Get_Data If Range("B4") = "日付" Then Exit For Else Range("B4:H54").ClearContents End If Next Else url = "URL;http://table.yahoo.co.jp/t?s=" & code & "&a=" & month_s & "&b=" & day_s & "&c=" & year_s & "&d=" & month_e & "&e=" & day_e & "&f=" & year_e & "&g=d&q=t&y=" & i & "&z=" & code & "&x=.csv" lastrow = (Range("B4").End(xlDown).Row + 1) Call Get_Data Range("B" & lastrow, "H" & lastrow).Delete row_length = (Range("B4").End(xlDown).Row) If row_length - lastrow < 49 Then Exit For End If End If Next Range("B5:H65000").Sort Key1:=Range("B5") lastrow = Range("B4").End(xlDown).Row Range("B5", "B" & lastrow).NumberFormatLocal = "yyyy/mm/dd" Range("C5", "H" & lastrow).NumberFormatLocal = "0" Range("A1").Select End Sub Sub Get_Data() With ActiveSheet.QueryTables.Add(Connection:=url, Destination:=Cells(lastrow, 2)) .Name = "Yahoo" .FieldNames = False .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = False .RefreshPeriod = 0 .WebSelectionType = xlSpecifiedTables .WebFormatting = xlWebFormattingNone .WebTables = wtbl .WebPreFormattedTextToColumns = True .WebConsecutiveDelimitersAsOne = True .WebSingleBlockTextImport = False .WebDisableDateRecognition = False .Refresh BackgroundQuery:=False End With End Sub

  • エクセルVBAでの質問です。

    エクセル2003での質問です。 book1のシート1からbook2のシート18セルC30へ 表のコピーを行い、C30が空白セルだったらそのまま貼り付け、 非空白だったら表最下部から2行あけて表のコピー操作を行う。 としたいのですが以下の箇所でエラーがでてしまいます。 book1.Activate sheet1.Range("C8:E24").Copy book2.Activate If sheet18.Range("C30") = "" Then sheet18.Range("C30:E46").Select Selection.PasteSpecial.xlPasteValues ←実行時エラー424発生 Else sheet18.Range("C30").End(xlDown).Offset(2).Select Selection.PasteSpecial.xlPasteValues ←実行時エラー424発生 End If 以上、解決策をご教示願います。

専門家に質問してみよう