[[20180614105032]] 『コードを短くする』(クァンタム) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『コードを短くする』(クァンタム)

お世話になっています

    ChDir "C:\test"
    Workbooks.Open Filename:="C:\test\2017年1月.xlsx"
    Range("A2").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
    Selection.Copy
    ActiveWindow.Close
    Workbooks.Open Filename:="C:\test\2017年2月.xlsx"
    Range("A2").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
    Selection.Copy
    ActiveWindow.Close
    Workbooks.Open Filename:="C:\test\2017年3月.xlsx"
    Range("A2").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
    Selection.Copy
    ActiveWindow.Close
    Workbooks.Open Filename:="C:\test\2017年4月.xlsx"
    Range("A2").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
    Selection.Copy
    ActiveWindow.Close
    ActiveSheet.Paste
    ActiveSheet.Paste
    ActiveSheet.Paste
    ActiveSheet.Paste
    Application.CommandBars("Office Clipboard").Visible = False
    Range("A2").Select
    ActiveWindow.SmallScroll Down:=-10
    Range("A1").Select
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("A2:A5069" _
        ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B2:B5069" _
        ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("C2:C5069" _
        ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Sheet1").Sort
        .SetRange Range("A1:M5069")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Selection.Subtotal GroupBy:=3, Function:=xlCount, TotalList:=Array(5), _
        Replace:=True, PageBreaks:=True, SummaryBelowData:=True
End Sub
こういったコードを短くする方法というのはどうすればいいのでしょうか。
最終的には集計する範囲を12か月分にしたいと思っているのですが、現在のコードでも長ったらしくなって見づらいので見やすいコードがあれば教えて頂けると助かります

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 >こういったコードを短くする方法というのはどうすればいいのでしょうか。

まず、
変数というのはご存知でしょうか?
次に、
For 〜 Next の構文はご存知でしょうか?

つまり、

プログラム始め
  n = 1から12まで繰り返す (変数nに次々と値を代入する)
    n月のファイルを開く
    開いたファイルのデータを自ブックにコピペ
    開いたファイルを閉じる
  次のnの値へ
  集積したデータを並び替え
  小計行挿入
プログラム終わり

このような流れになると思いますが、
とりあえず、繰り返しのFor〜Nextの構文は知っておられますか?
それとも全くわかりませんか?
それから、上の擬似コードでのnの部分が
入れ替わり立ち代わり変わってくれたら
良いのが解ると思いますが、これを変数といいます。
その辺のことも理解されてますか?
理解されてないなら、その辺から話を始めなければいけませんが、
多少知ってるということなら、
まずはファイルのプルパスを次々と変える部分から、
ご自分で書いてみませんか?

(まっつわん) 2018/06/14(木) 11:53


[[20180602171644]] 『転記および集計』(コルト)
↑と一部の構造がよく似たコードになっていますが、同じ方or参考元はこちらですか?

とりあえず、コードの構造が似てるので、コメントしようとするとほぼ同じになっちゃうので[[20180602171644]]を参考にしてみてください。
(もこな2) 2018/06/14(木) 12:24


遅くなってしまいましたが、お二人ともありがとうございます。
参考にさせて頂きます。
(クァンタム) 2018/06/20(水) 16:00

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.