- ベストアンサー
変数の値をセルから取得する方法
- 変数の値をセルから取得するには、VBAのCells関数を使用します。
- 具体的な方法は、cells(10, 5)で指定したセルの値を変数に代入することになります。
- ただし、指定したセルの内容が変数ではなく、g_array(1, 1)という文字列になってしまう場合は、セルの値を直接変数に代入するのではなく、セルの値をg_array(1, 1)に代入するようにVBAコードを修正する必要があります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
セル(10,5)に入っているのは「g_array(1,1)」という「文字列」ですから、ご質問のように文字列としての「g_array(1,1)」が返ってきてしまう訳です。 配列名g_arrayが固定(他の配列も定義して、セルに入れる配列名が変化する。という状況はない)だとして、強引ですが以下のようにすればとりあえずは目的の値が返ります。 動作の概要としては、文字列としての「g_array(1,1)」から数値としての添字「1と1」を取り出してきて、g_arrayの添字として使って、目的の値を得ています。 -------------- Sub sample() Dim g_array(3, 3) As Variant Dim idx As Variant '配列の添字用 g_array(1, 1) = "5" Dim test As Variant idx = getindex(Cells(10, 5).Value) test = g_array(idx(0), idx(1)) End Sub Private Function getindex(str As String) Dim retdata(1) '戻り値を配列で Dim i As Long Dim strlen As Long Dim str0 As String Dim str1 As String strlen = Len(str) str1 = "" For i = 1 To strlen str0 = Mid(str, i, 1) chk = check(str0) Select Case chk Case 0 '数値の場合 str1 = str1 + str0 Case 1 '「,」の場合 retdata(0) = str1 str1 = "" Case 2 '「)」の場合 retdata(1) = str1 End Select Next i getindex = retdata End Function Private Function check(str As String) As Long check = 9 If str = "," Then check = 1 End If If str = ")" Then check = 2 End If If InStr("0123456789", str) <> 0 Then check = 0 End If End Function ------------------ 全然スマートではないです。もっといい方法があると思います。 ご参考までに。