• ベストアンサー

RangeとCellsの違いとこのプログラミングの意味

Sub... y=Worksheets("sheet2").Cells(25,13).Value Worksheets("sheet1").Range("B13").Value=z これの意味を階層構造を含めて答えよ。 自分はzの値をyに代入するという意味だと思うのですが、それではだめで階層構造を含めてかけと言われるとわかりません。 どのような意味があるのでしょうか。 また、RangeとCellsの違いを教えてください。 お願いします!

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

ExcelVBAのオブジェクトの階層構造は、最上位が、Excelを表す「Applicationオブジェクト」で、その下からWorkbookオブジェクト→Worksheetオブジェクト・・・と続いています。 y = Worksheets("Sheet2").Cells(25, 13).Value は、 Worksheetオブジェクトの中の"Sheet2"というWorksheetオブジェクトのCellというオブジェクトの中の25行13列目のセルの値を 変数y に代入するということです。 Worksheets("Sheet1").Range("B13").Value = z は、 変数z に代入されている値を、Worksheetオブジェクトの中の"Sheet1"という名前のWorksheetのRangelというオブジェクトの中のB13という名前のRangeに入れるということです。 ご提示のコードだけでは 変数y と 変数z の関係はわかりません。 > また、RangeとCellsの違いを Rangeはある範囲のセルを指定できます。(Rangeは”範囲”ですから) Range("B13").Value = z ではRangeで1つのセルだけを指定しましたが、仮にA1からB3の範囲のセル全部に入力するなら、 Range("A1:B3").Value=z とすることができます。 Rangeの他に、1つのセルを指定するのにCells(行、列)という指定の仕方もあります。 Cells(1,1)とすればセルA1をさします。 Cells(3,2)とすればセルB3をさします。 Cells(行、列)で複数セル範囲は指定できません。Range("A1:B3")をどうしてもCellsを使ってあらわしたければ、Range(Cells(1,1),Cells(3,2))といった書き方をしなければなりません。

関連するQ&A