web-dev-qa-db-ja.com

VBAを使用して別のシートから値を取得する

他のシートから値を取得したい。

たとえば、Excel(sheet2)にはいくつかの値があります。

    A  B  C  D
    -  -  -  -  
1 | 2  5  9  12
2 | 5  8  4  5
3 | 3  1  2  6

行4の各列を合計します。

私はsheet2でこれらの値を使用していますが、sheet1で結果を取得したいです。

Sheet2でコードを使用すると正しい答えが得られますが、別のシートで使用しようとすると、sheet2ではなく現在のシートセルに対応する値の結果が得られます。

With Application.WorksheetFunctionを使用しています。

アクティブなシートとしてsheet2を設定するにはどうすればよいですか?

29
Apollon1954

試してみる

 ThisWorkbook.Sheets("name of sheet 2").Range("A1")

コードの場所や現在アクティブなシートに関係なく、シート2の範囲にアクセスします。シート2をアクティブシートにするには、試してください

 ThisWorkbook.Sheets("name of sheet 2").Activate

別のシートの行の合計が必要な場合は、VBAを使用する必要はまったくありません。シート1に次のような式を入力します。

=SUM([Name-Of-Sheet2]!A1:D1)
45
Doc Brown

それは(あなたにとって非常に具体的な例です)

ActiveWorkbook.worksheets("Sheet2").cells(aRow,aCol).Value=someval

OR

someVal=ActiveWorkbook.worksheets("Sheet2").cells(aRow,aCol).Value

F1を取得し、Worksheetsコレクションについての説明を読んでください。Worksheetsコレクションには、Cellオブジェクトを保持するCellsコレクションが含まれています。

17
jpinto3912
Sub TEST()
Dim value1 As String
Dim value2 As String
value1 = ThisWorkbook.Sheets(1).Range("A1").Value 'value from sheet1
value2 = ThisWorkbook.Sheets(2).Range("A1").Value 'value from sheet2
If value1 = value2 Then ThisWorkbook.Sheets(2).Range("L1").Value = value1 'or 2
End Sub

これは、2つのシートセル値を比較し、それらが一致する場合、値をシートLの列Lに配置します。

2
James Heffer
SomeVal=ActiveWorkbook.worksheets("Sheet2").cells(aRow,aCol).Value

動作しませんでした。しかし、次のコードは私のためだけに働いた。

SomeVal = ThisWorkbook.Sheets(2).cells(aRow,aCol).Value
0
RanonKahn

私が使用しているスクリプトを使用して、特定のセル値を別のシートから特定のシートに戻すことができます。

Sub reviewRow()
Application.ScreenUpdating = False
Results = MsgBox("Do you want to View selected row?", vbYesNo, "")
If Results = vbYes And Range("C10") > 1 Then
i = Range("C10") //this is where i put the row number that i want to retrieve or review that can be changed as needed
Worksheets("Sheet1").Range("C6") = Worksheets("Sheet2").Range("C" & i) //sheet names can be changed as necessary
End if
Application.ScreenUpdating = True
End Sub

これを使用してフォームを作成し、必要に応じてパーソナライズできます。

0
Joni Depp

シートのデータが必要になる前に、ワークシートのactivateコマンドを試してください。

objWorkbook.WorkSheets(1).Activate
objWorkbook.WorkSheets(2).Activate
0
Mike