行と列 (As Long) が与えられた場合、Excel (2007) で VBA を使用してスプレッドシートの表記法を決定する方法は次のとおりです。
例えば:
(R, C) = (1, 1) -> "A1"
(R, C) = (2, 1) -> "A2"
(R, C) = (2, 2) -> "B2"
したがって、関数がある場合:
Function CellRef(R As Long, C As Long) As String
その機能を提供した場合、次のようなことができます。
Worksheet.Range(CellRef(R1, C1) + ":" + CellRef(R2, C2)).Copy
これが間違ったアプローチである場合に備えて、少し背景を説明します。これの目的は、テーブル内の他のワークシートを説明するマスター シートを作成することです。
WorksheetName, Range etc....
このマスター シートは、シートの変換を制御しますが、範囲の値は、後で範囲を参照する際に便利なように、明らかに Excel 表記になっています。ただし、このテーブルを管理し、例外を報告し、一貫性を確保するためのルーチンは、行と列の他のシートから実際に取得するため、たとえば、何かが開始および終了することを認識している行と列を取得します。
これが私が最終的に得た関数です:
Private Function CellRef(R As Long, C As Long) As String
CellRef = vbNullString
On Error GoTo HandleError:
CellRef = Replace(Mid(Application.ConvertFormula("=R" & R & "C" & C, XlReferenceStyle.xlR1C1, XlReferenceStyle.xlA1), 2), "$", "")
Exit Function
HandleError:
End Function