31本目 2次元配列+動的配列を使ってみよう!

VBA100本ノック

VBA100本ノック 31本目を動画で解説しています。Excelの神髄さんの模範解答はコチラ


問題

#VBA100本ノック 31本目
アクティブシートのA1セルに、入力規則の「リスト」を設定します。
「リスト」の「元の値」には、ブックの全シートのシート名を設定してください。
A1セルに間違った値を入力した場合は分かり易い警告文がでるようにしてください。
※再実行を考慮
※ブックの指定は任意

解答

Sub シート名をシートに出力()

    Dim i
    For i = 1 To Sheets.Count
        Cells(i, 5) = Sheets(i).Name
    Next i
    
End Sub

Sub セル範囲を配列に格納()

    Dim MyArray
    MyArray = Range("E1:F4")
    
    Debug.Print MyArray(1, 1)
    
End Sub

Sub セル範囲を配列に格納して出力()

    Dim MyArray
    MyArray = Range("E1:F4")
    
    Range("G1:H4") = MyArray
    
End Sub


Sub セル範囲を配列に格納して出力2()

    Dim MyArray
    MyArray = Range("E1").CurrentRegion
    
    Range("G3").Resize(UBound(MyArray, 1), UBound(MyArray, 2)) = MyArray
        
End Sub

Sub シート名を配列に格納()

    Dim MyArray()
    ReDim MyArray(1 To Sheets.Count, 1 To 1)
    
    Dim i
    For i = 1 To Sheets.Count
        MyArray(i, 1) = Sheets(i).Name
    Next
    
    Range("C1").Resize(UBound(MyArray, 1), 1) = MyArray
    
    With Range("A1").Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=" & Range("C1").Resize(UBound(MyArray, 1), 1).Address
        .IgnoreBlank = True
        .InCellDropdown = True
        .ErrorTitle = "エラー"
        .ErrorMessage = "リストから選択してね"
        .IMEMode = xlIMEModeNoControl
        .ShowInput = True
        .ShowError = True
    End With
    
End Sub
新人君
新人君

む、難しそう…!

ブチョ
ブチョ

余裕余裕!

新人君
新人君

ホンマかいな…

コメント

タイトルとURLをコピーしました