ポイント
- Select Case value で value が何であるのか、大小、範囲を評価できる。
- 別の変数など任意の判定は、使用が想定されていない(と思う)。
- Select Case True とすれば、その後の Case で任意の判定を行うように使える。
【Excel VBA】Range.Value (2 次元配列) の行・列を操作するクラスのコード – oki2a24 にて RangeValue インスタンスに関数名を引数に渡してマップ処理をできるようにしてみました。けれども、支障があるくらい遅かったですの><。ですので結局マップで回す部分を取り出して、別の関数に渡してやり、結果を RangeValue インスタンスの元の場所に戻してやる、という方法を取りました。
別の方法として、ダックタイピングで関数をもつオブジェクトを RangeValue インスタンスに渡すのはどうかしら?と思いつきました。今回はその記録ですの♪
Public Sub Test() Dim newSheet As Worksheet: Set newSheet = ThisWorkbook.Sheets.Add Debug.Print newSheet.Rows.Count End Sub
On Error Resume Next
でエラー発生時もコードの実行を継続させる。UBound
関数を用いて次元を判定する。何種類もの表に対して、定期的に、同じ内容の編集を何度も繰り返し行う場合に役立つと存じます。同じ手作業を繰り返し行わなくて済むようになりますので、楽ができますの♪
一方で、一度しか行わないのでしたら、本投稿のコードを使う必要性はない、という場合も多いかと存じます。
Range(Cells(起点行, 起点列), Cells(RangeValue.RowCount, RangeValue.ColCount))
のように起点となる行番号・列番号を指定すれば自動的にサイズを調整して反映するので楽。Excel VBA には map reduce がございません。使いたいです (使いこなせているかどうかは別として)!これらのページ等を参考にすればできそうですの♪
map するためには、対象となる集合を用意する必要がございます。Excel VBA ですと配列、特に 2 次元配列を使うことが多いように感じます。これを map にかけるのは、、、なんだか難しそうですのでまずはコレクションで試してみたいですわ。
そのために、まずはコレクションを気軽に作れるようにしたいですわ♪そのようなわけで、どんな配列でもコレクションにする関数を書いてみましたの!