VBA100本ノック 48本目を動画で解説しています。Excelの神髄さんの模範解答はコチラ
問題
#VBA100本ノック48本目
引数が1次元または2次元配列の場合、以下の処理を行いVariantで返すFunctionを作成。
xxx (v as Variant) As Variant
・数値型は整数部のみにする(1.5→1, -1.5→-1)
・数値型以外(文字列、日付、その他)はそのまま
※配列以外と3次元配列以上もそのまま返してください。
解答
Sub test1()
Dim rng, ary
Set rng = Range("A1").CurrentRegion
ary = rng
rng.Offset(rng.Row + 2) = ノック48本目(ary)
End Sub
Function ノック48本目(v As Variant) As Variant
Dim i, j
On Error Resume Next
Select Case これは何次元配列ですか(v)
Case 1 '1次元配列の中の数値を切り捨て
For i = LBound(v, 1) To UBound(v, 1)
v(i) = Fix(v(i))
Next i
Case 2 '1、2次元配列の中の数値を切り捨て
For i = LBound(v, 1) To UBound(v, 1)
For j = LBound(v, 2) To UBound(v, 2)
v(i, j) = Fix(v(i, j))
Next j
Next i
End Select
ノック48本目 = v
End Function
Function これは何次元配列ですか(v As Variant) As Long
On Error Resume Next
Dim 次元数 As Long
次元数 = 0
Dim 最大要素数 As Long
Do While Err.Number = 0
次元数 = 次元数 + 1
最大要素数 = UBound(v, 次元数)
Loop
これは何次元配列ですか = 次元数 - 1
End Function

新人君
難しそうな問題ですね!

ブチョ
いやいや超ラッキー問題だろ!(笑)

新人君
ホンマか…?
コメント