他のシートから値を取得したい。
たとえば、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を設定するにはどうすればよいですか?
試してみる
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)
それは(あなたにとって非常に具体的な例です)
ActiveWorkbook.worksheets("Sheet2").cells(aRow,aCol).Value=someval
OR
someVal=ActiveWorkbook.worksheets("Sheet2").cells(aRow,aCol).Value
F1を取得し、Worksheetsコレクションについての説明を読んでください。Worksheetsコレクションには、Cellオブジェクトを保持するCellsコレクションが含まれています。
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に配置します。
SomeVal=ActiveWorkbook.worksheets("Sheet2").cells(aRow,aCol).Value
動作しませんでした。しかし、次のコードは私のためだけに働いた。
SomeVal = ThisWorkbook.Sheets(2).cells(aRow,aCol).Value
私が使用しているスクリプトを使用して、特定のセル値を別のシートから特定のシートに戻すことができます。
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
これを使用してフォームを作成し、必要に応じてパーソナライズできます。
シートのデータが必要になる前に、ワークシートのactivateコマンドを試してください。
objWorkbook.WorkSheets(1).Activate
objWorkbook.WorkSheets(2).Activate