読者です 読者をやめる 読者になる 読者になる

Powerpoint VBAを使おう!

Powerpoint VBAやExcelのVBAで遊んでいます。Word VBAも始めました。

フィールド数が多いデータに取り組む⑤

thomさんにコードを指摘してもらって,すごいシンプルになったコード。

各Function やSubが短くてシンプルになっているコードってすごいと思うので,気持ちいい限りです。

If文は私は多用するので,今回教えてもらった技術は身に着けていかないといけないです。

やれるところから,やっていこう。

特にフラグとか他のでわたしもよく使うのに,今回気づきもしなかったので,他の方から指摘をうけれるこの状況はとてもいい。

職場では,誰もコードに何か言ってくれる人はいませんから。。

一人であーだこーだ考えていろいろなテストをして,適切に対応するしかない。


わたしが何かミスをしていたようで,というかソートをほんときちんと理解してなくてトライアンドエラーでやってたんですが,
キー1とキー2が等しいものをソートして,昇順,降順でIDの順番が入れ替わります。

他の要素が同じならID順に並んでほしいというのが人情。

そこを突き止めようとしていて,ファイル添付ができないストレスから,

とりあえずいらないものを作ってしまいました。

とっても単純なものですが,
テストのシートはこれ。
f:id:chemiphys:20170111205053p:plain

Sub シートのcode化()
    Dim x As Range
    Debug.Print "Sub MakeSheet()"
    Debug.Print "    with activesheet"
    For Each x In ActiveSheet.Range("a1").CurrentRegion
        Debug.Print "        .range(""" & x.Address & """).value=" & """" & x.value & """"
    Next
    Debug.Print "    end with"
    Debug.Print "end sub"
End Sub

中身とサブルーチン名からわかってしまうと思いますが,イミディエイトウィンドウに次のようなものを出力します。

Sub MakeSheet()
    with activesheet
        .range("$A$1").value="ID"
        .range("$B$1").value="姓"
        .range("$C$1").value="名"
        .range("$D$1").value="姓_ふり"
        .range("$E$1").value="名_ふり"
        .range("$F$1").value="カテゴリ"
        .range("$G$1").value="数値1"
        .range("$H$1").value="数値2"
        .range("$I$1").value="数値3"
        .range("$J$1").value="ラベル4"
        .range("$K$1").value="ラベル5"
        .range("$L$1").value="ラベル6"
        .range("$M$1").value="ラベル7"
        .range("$N$1").value="ラベル8"
        .range("$A$2").value="101"
        .range("$B$2").value="差市素"
        .range("$C$2").value="周世"
        .range("$D$2").value="さしす"
        .range("$E$2").value="すせ"
        .range("$F$2").value="A"
        .range("$G$2").value="40"
        .range("$H$2").value="23"
        .range("$I$2").value="21"
        .range("$J$2").value="101ラベル4"
        .range("$K$2").value="101ラベル5"
        .range("$L$2").value="101ラベル6"
        .range("$M$2").value="101ラベル7"
        .range("$N$2").value="101ラベル8"
        .range("$A$3").value="102"
        .range("$B$3").value="真美無"
        .range("$C$3").value="藍"
        .range("$D$3").value="まみむ"
        .range("$E$3").value="あい"
        .range("$F$3").value="A"
        .range("$G$3").value="192"
        .range("$H$3").value="38"
        .range("$I$3").value="26"
        .range("$J$3").value="102ラベル4"
        .range("$K$3").value="102ラベル5"
        .range("$L$3").value="102ラベル6"
        .range("$M$3").value="102ラベル7"
        .range("$N$3").value="102ラベル8"
        .range("$A$4").value="103"
        .range("$B$4").value="葉日"
        .range("$C$4").value="素太"
        .range("$D$4").value="はひ"
        .range("$E$4").value="そた"
        .range("$F$4").value="C"
        .range("$G$4").value="180"
        .range("$H$4").value="48"
        .range("$I$4").value="10"
        .range("$J$4").value="103ラベル4"
        .range("$K$4").value="103ラベル5"
        .range("$L$4").value="103ラベル6"
        .range("$M$4").value="103ラベル7"
        .range("$N$4").value="103ラベル8"
        .range("$A$5").value="104"
        .range("$B$5").value="差市素"
        .range("$C$5").value="比布"
        .range("$D$5").value="さしす"
        .range("$E$5").value="ひふ"
        .range("$F$5").value="A"
        .range("$G$5").value="58"
        .range("$H$5").value="10"
        .range("$I$5").value="25"
        .range("$J$5").value="104ラベル4"
        .range("$K$5").value="104ラベル5"
        .range("$L$5").value="104ラベル6"
        .range("$M$5").value="104ラベル7"
        .range("$N$5").value="104ラベル8"
        .range("$A$6").value="105"
        .range("$B$6").value="葉日"
        .range("$C$6").value="経帆"
        .range("$D$6").value="はひ"
        .range("$E$6").value="へほ"
        .range("$F$6").value="B"
        .range("$G$6").value="180"
        .range("$H$6").value="30"
        .range("$I$6").value="5"
        .range("$J$6").value="105ラベル4"
        .range("$K$6").value="105ラベル5"
        .range("$L$6").value="105ラベル6"
        .range("$M$6").value="105ラベル7"
        .range("$N$6").value="105ラベル8"
        .range("$A$7").value="106"
        .range("$B$7").value="目藻"
        .range("$C$7").value="早史"
        .range("$D$7").value="めも"
        .range("$E$7").value="さし"
        .range("$F$7").value="C"
        .range("$G$7").value="180"
        .range("$H$7").value="30"
        .range("$I$7").value="2"
        .range("$J$7").value="106ラベル4"
        .range("$K$7").value="106ラベル5"
        .range("$L$7").value="106ラベル6"
        .range("$M$7").value="106ラベル7"
        .range("$N$7").value="106ラベル8"
        .range("$A$8").value="107"
        .range("$B$8").value="立津"
        .range("$C$8").value="久家湖"
        .range("$D$8").value="たちつ"
        .range("$E$8").value="くけこ"
        .range("$F$8").value="D"
        .range("$G$8").value="109"
        .range("$H$8").value="31"
        .range("$I$8").value="5"
        .range("$J$8").value="107ラベル4"
        .range("$K$8").value="107ラベル5"
        .range("$L$8").value="107ラベル6"
        .range("$M$8").value="107ラベル7"
        .range("$N$8").value="107ラベル8"
    end with
end sub

長くてすみません。もっと縮めるかこういうものこそ : でつなぎまくればいいんですが,
シートを再現するマクロを作るマクロです(;´▽`A``

本題に取り組みます。