• ベストアンサー

excel  マクロ表現

atai_a = Worksheets("kensuu").Cells(5, 7) とおなじ意味の記述で A1セルにシート名kensuu B1セルにセルアドレスが$G$5 (つまりCells(5, 7)と同等の情報) と入っているという前提で hensuua = Worksheets(cells(1,1)).xxx という表現は可能ですか。 そのときxxxはどのように記述できるのですか。

質問者が選んだベストアンサー

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

シート名の箇所は恐らく .Text か .Value が必要になると思います。↓こんな感じで hensuu = Worksheets(Cells(1, 1).Text).Range(Cells(1, 2)) お試しください

その他の回答 (4)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんばんは。 本来は、一旦、変数に入れるべきでは? 必要なら、何も入っていない場合のためのエラー処理をします。 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)
回答No.4

標準で文字列で指定(" "でリテラル文字を囲む)する場所は、セルに(文字列の)値が有る場合は、そのまま置き換えれば、まず動く。 まずシートの特定は 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)
回答No.3

hensuua = Worksheets(Cells(1, 1).Text).Cells(1, 2) ですね。 シート名は.Textで値をテキスト変換してあげないと、テキストとして認識してくれません。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

ActiveCell.Value = Worksheets(Range("A1").Value).Range(Range("B1").Value) とか Sheets(Cells(1,1).Value).Range(Range("B3").Value) とか出来ませんでしょうか。

関連するQ&A