2017-02-11 9 views
0

バインディングの作成:は、動的範囲後期が動的にこれを使用して範囲を作成しようとしているVBA

ws.Range(Cells(1, 1), Cells(q + 1, z + 1)).Value2 = xaRR 

これは魔法のようにExcelで動作しますが、アクセスVBAは私に問題を与え続けています。それは細胞の部分のようなdoesnt。

 Dim oXL As Object: Dim wb As Object: Dim ws As Object: Dim rNg As Object: Dim cl As Object 
     Set wb = .Workbooks.Add 
     Set ws = wb.Sheets 
     Set rNg = ws.Range 
     Set cl = rNg.Cells 
     ws.rNg(cl(1, 1), cl(q + 1, z + 1)).Value2 = xaRR 

それはRNGは、このプロパティまたはメソッドをサポートしてdoesntのことを言います:迷惑な事は、私はこれがしようとすると、これは私にどんな大騒ぎ

ws.Cells(1,1).Value = blah blah blah 

を与えるdoesntのです。

明らかな問題を誰かに教えてもらえますか?

+0

レイトバインディングを使用する必要がありますか? – Comintern

+0

@ Cominternはい。環境のため、私は特定のExcelライブラリ参照を使用することはできません。遅いバインディングは残念なことに要件です。 –

+0

アクセスでは、 'ws.'で' Cells'への呼び出しを修飾します。 – ThunderFrame

答えて

3

元の行は、アクティブシートへの暗黙の参照を使用しています。 Excelで、それは動作します(ただし、Activesheetを使用するつもりがない場合はバグです)が、Accessではエラーになります。

私はwsWorksheet対象としませWorksheetsオブジェクト

ws.Range(ws.Cells(1, 1), ws.Cells(q + 1, z + 1)).Value2 = xaRR 

またはあなたの第二の例であると仮定します:私はしました

細胞は、明示的な呼び出しのために、シートを参照して呼び出す資格Cells変数を削除しました。また、カンマの命令セパレータの代わりに: Dimを使用しました。命令セパレータは悪です。

ws変数はすべてシートですので、最初のものを取得しましたが、実装は変更する必要があります。

Dim oXL As Object, wb As Object, ws As Object 
Set wb = .Workbooks.Add 
Set ws = wb.Sheets(1) 
ws.Range(ws.Cells(1, 1), ws.Cells(q + 1, z + 1)).Value2 = xaRR 
+0

明らかにrNg = ws.Rangeはサポートされているメソッドまたはプロパティのいずれかです。私はそれを把握するまで物事を試し続けます。 –

+1

私の編集を参照するには、 'ws = wb.Sheets'の代わりに' Set ws = wb.Sheets(1) 'を使って' ws'を* single *シートに設定する必要があります。 – ThunderFrame

+0

Ah。私はそれをしてrNg参照を取り出して、chamrのように働かなければなりませんでした。ありがとうございます –

関連する問題