- ベストアンサー
excel マクロ表現
atai_a = Worksheets("kensuu").Cells(5, 7) とおなじ意味の記述で A1セルにシート名kensuu B1セルにセルアドレスが$G$5 (つまりCells(5, 7)と同等の情報) と入っているという前提で hensuua = Worksheets(cells(1,1)).xxx という表現は可能ですか。 そのときxxxはどのように記述できるのですか。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
シート名の箇所は恐らく .Text か .Value が必要になると思います。↓こんな感じで hensuu = Worksheets(Cells(1, 1).Text).Range(Cells(1, 2)) お試しください
その他の回答 (4)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 本来は、一旦、変数に入れるべきでは? 必要なら、何も入っていない場合のためのエラー処理をします。 Sub Tes1() Dim shName As String Dim Addr As String shName = Range("A1").Value Addr = Range("B1").Value If ShName = "" Or Addr ="" Then Exit Sub MsgBox Worksheets(shName).Range(Addr).Value End Sub でも、なんとなく、VBAのコードとは違う感じがします。 一種の実験コードなら良いかもしれません。 必要なら、数式で取ればよいのではないかと思います。 =INDIRECT(A1&"!"&B1) VBAでは、Evaluate を使います。 Sub Test2() Dim ret As Variant ret = Evaluate("=INDIRECT(A1 & ""!""& B1)") End Sub これなら、ret でエラーを出しても、IsError 関数で排除できます。
- imogasi
- ベストアンサー率27% (4737/17069)
標準で文字列で指定(" "でリテラル文字を囲む)する場所は、セルに(文字列の)値が有る場合は、そのまま置き換えれば、まず動く。 まずシートの特定は Worksheets(cells(1,1)). セルの指定方法で、Cells(A,B)の指定は、A,Bは数字+数字か数字+番地文字列で指定する。 しかし質問の場合は、番地文字列でわかっているから、Range(C)を使い、Cを文字列の有るセル(のValue)で置き換えればよい。普通はValueを省略アするので .Range(Cells(5,"G")) あわせてWorksheets(cells(1,1)).Range(Cells(5,"G")) 基本的にはこういう間接指定(2段構え指定)が可能だが、うまく行かない別の他の(VBAでの)ケースが有るので、経験をつむしかない。
- qualheart
- ベストアンサー率41% (1451/3486)
hensuua = Worksheets(Cells(1, 1).Text).Cells(1, 2) ですね。 シート名は.Textで値をテキスト変換してあげないと、テキストとして認識してくれません。
- hallo-2007
- ベストアンサー率41% (888/2115)
ActiveCell.Value = Worksheets(Range("A1").Value).Range(Range("B1").Value) とか Sheets(Cells(1,1).Value).Range(Range("B3").Value) とか出来ませんでしょうか。