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

新人君
む、難しそう…!

ブチョ
余裕余裕!

新人君
ホンマかいな…
コメント