1
1.Dim destbook As Workbook

2.Dim destsheet As Worksheet

3.Set destbook = Workbooks("Book1")

4.Set destsheet = destbook.Sheets(1)

5.Workbooks("Book1").Sheets("Sheet1").Range("C6").Select

6.ct = Range(Selection, Selection.End(xlDown)).count + 1

7.destbook.Activate

8.Workbooks(destbook).Sheets(destsheet).Range("A" + ct).Select

9.Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

ここで、このコードを実行すると、8行目に「型の不一致」というエラーが表示されます。

助けてもらえますか??...

4

3 に答える 3

1

ほとんどの人がすでに指摘しているように、目的の宛先セルを参照する方法を変更する必要があります。アンパサンド (&) に切り替えるか、1 つのセルのみを更新するため、Cells(row,col) 参照のみに変更できます (以下のコードを参照)。また、コードをスリム化して効率を高めることも検討する必要があります。

Dim destbook As Workbook
Dim destsheet As Worksheet

Set destbook = Workbooks("Book1")
Set destsheet = destbook.Sheets(1)

'See my note below
destbook.Activate
destsheet.Range("C6").Select
ct = Range(Selection, Selection.End(xlDown)).Count + 1
destsheet.Cells(ct, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

注: - 変数 destbook と destsheet を使用するには、5 行目を変更する必要があります。最初にワークブックをアクティブ化するために 7 行目を上に移動する必要があることに注意してください。その後、ワークシートの宛先シートを参照できます。- 「以下のメモを参照」では、おそらくどこかから何らかの値をコピーする必要があります。そうしないと、PasteSpecial コマンドで新しいエラーが発生します。- 8 行目からの選択を他のコード (ここで提供していないコード) で再利用する予定がない限り、8 行目と 9 行目を結合する必要があります。

お役に立てれば。

于 2013-09-19T20:06:06.573 に答える
1

"Workbooks" と "Sheets" のインデックスとして "destbook" と "destsheet" を使用していますが、1 行目と 2 行目で定義したように、実際にはそれ自体が "Workbook" と "Worksheet" のタイプです。 8 から: destsheet.Range("A" + ct).Select

于 2013-09-19T13:47:13.733 に答える