2023年06月30日

【Excel VBA】ユーザー定義型でちょっとハマった件

お題

constがカオス・・・w
似たようなものがいっぱいあってごっちゃごちゃだから、まとめよう。
と思ったらちょっと罠があったので、メモ。


実装

●定義
Public Type FileInfo
    fileName As String
    shtName As String
    beginRow As Long
    endColumn As Long
End Type


●値セット
Public Function SetType( ByRef info1 As FileInfo, ByRef info2 As FileInfo)
    With info1
        .fileName = "test.xls"
        .shtName = "sheet1"
        .beginRow = 2
        .endColumn = 8
    End With

    With info2
        .fileName = "test2.xls"
        .shtName = "sheet2"
        .beginRow = 2
        .endColumn = 10
    End With
End Function


●呼び出し
Dim info1 As FileInfo,info2 As FileInfo
Sub Main()
    Call SetType(info1,info2)
End Sub



メモ

FunctionはByRefで渡さないと、エラー吐きます。
へなちょこは理由がなければ基本ByVal渡しする派なので、最初は何も考えずにByValで渡してて、ちょっとハマった
当たり前よね笑

ユーザー定義型にしておくと、メンバが表示されるようになるので、入力間違いも防げるし、いちいち宣言しなくてもいいから楽ちん♪
今回はあくまでターゲットの情報をわかりやすくしたかったので、あえて別のオブジェクトにしてみた。
infoをまとめてがちゃがちゃやる場合はinfoを配列にしちゃえばいいよ。










タグ: Excel tips
Build a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: