変数の代わりにT1Address
をリテラルとして渡しています。試してみてください:
ActiveCell.Formula = "=COUNTA('1st Sheet'!" & T1Address & ")"
Shai Rado's approach実際には良い方法です。 あなたが
Range("AT3").Formula = "=COUNTA('1st Sheet'!" & T1Address & ")"
をSelect
とActiveCell
を無視して使用することができ、私が見るもう一つの問題は、あなたがT1Start
内のセル"AQ3"
の値とT1End
のセル"AR3"
の値を格納しようとしているということです。実際にそれがあなたの意図であるかどうかはわかりませんが、私はそれらのアドレスの列番号を取得することを意図していたと思います。この
T1Start = Sheets(2).Range("AQ3").Column
T1End = Sheets(2).Range("AR3").Column
で
T1Start = Sheets(2).Range("AQ3").Value
T1End = Sheets(2).Range("AR3").Value
UPDATE:その場合は、この置き換えあなたのコメントを1としてを、あなたは関係なく、どのようにそれを、ワークブックの最初のワークシートを参照したいですが呼び出されます。ここではそれを達成するために私の知識では選択肢は以下のとおりです。
Sheets(1).name
- 両方のグラフシートおよびワークシート
Worksheets(1).name
を考慮します - だけ
Sheet1.name
をワークシート考慮します - (と間違えてはならないワークシートの名前を使用しています
ThisWorkbook.Worksheets(1).name
- コードが呼び出されている場所からワークブックに修飾されています。つまり、ユーザーが複数のブックを開いている場合、これはまだ有効です。
オブジェクト全体を処理したくないため、ワークシートの.name
プロパティを使用しています。 あなたは
Range("AT3").Formula = "=COUNTA(Sheets(1)" & T1Address & ")"
を試したと言うとき、あなたが代わりに(また、実際には間違っているだろう)オブジェクト自体のリテラルとしてSheets(1)
を渡しているので、あなたは、以前と同じミスを犯しました。これは、あなたがそれを行うことができる方法である。
Range("AT3").Formula = "=COUNTA('" & Sheets(1).name & "'!" & T1Address & ")"
ここで注意すべき物事のカップル:
- 私は(
Sheets(1)
のハイライトの色を比較パラメータとしてではなく、リテラルとしてSheets(1).name
値を使用していますそれはExcelがこの私ので、私は、名前の後に!
をも付加している
- それを理解する方法であるため、
- )視覚的な参照のための私のコードにし、あなたに私が
'
(単一引用符)でパラメータを同封していますsのあなたが設定することによって、これを達成することができ、Excelの構文
だから最後に、ワークシートを想定すると、「MyWorksheet」という名前で、T1Address
は、「A1」、セルの値が「AT3」は=COUNTA('MyWorksheet'!A1)
に
あなたは '代わりに変数のリテラルとしてT1Address'を渡しています。 'ActiveCell.Formula =" = COUNTA( '1st Sheet'! "&T1Address&") "' –
は 'Range ' COUNTA( '1st Sheet'! "&T1Address&") "' –