ついに夏本番!さぁ、家族でキャンプに行くぞ! >>

Sub...
y=Worksheets("sheet2").Cells(25,13).Value
Worksheets("sheet1").Range("B13").Value=z

これの意味を階層構造を含めて答えよ。

自分はzの値をyに代入するという意味だと思うのですが、それではだめで階層構造を含めてかけと言われるとわかりません。
どのような意味があるのでしょうか。
また、RangeとCellsの違いを教えてください。
お願いします!

このQ&Aに関連する最新のQ&A

A 回答 (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))といった書き方をしなければなりません。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QエクセルVBA 別シートの複数のセルの値をコピーする方法

いつもお世話になります。

Dim sh1, sh2 As Worksheet
Set sh1 = Worksheets("sheet1")
Set sh2 = Worksheets("sheet2")

sh1.Range("C6").Value = sh2.Range("F5").Value
として、1つのセルの値ならコピーできるのですが、
sh1.Range("C6:C10").Value = sh2.Range("F5;F9").Value
としても、セルの値を持ってくることができません。
どのように書けば良いのでしょうか?

ちなみに今は、
sh2.Range("F5:F9").Copy
sh1.Range("C5:C9").PasteSpecial Paste:=xlValues
としているのですが、上記だとセルを範囲指定してしまって作業が見えるのでカッコ悪いのです。

Aベストアンサー

7-samuraiの質問ですみません。
No5のimogasiさん、いつもお世話様です。

Sub test01()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Set sh1 = Worksheets("sheet2")
Set sh2 = Worksheets("sheet1")
sh1.Range("c1:c5").Value = sh2.Range("A1:A5").Value
End Sub

で、うまくいきますよ。
複数セルの場合Valueは省略できないようです。


人気Q&Aランキング