3

別のシートで行全体を選択し、その行をマクロを使用して現在のシートにコピーしようとしています。Rows() サブルーチンがハードコードされた整数を渡された場合、コードは正常に機能しますが、変数を配置すると、「Range クラスの Select メソッドに失敗しました」というエラーが表示されます。ここに私が持っているコードがあります:

Sheets("BOM").Select
Rows(copyFromRow & ":" & copyFromRow).Select
Selection.Copy
Sheets("Proposal").Select
Rows(copyToRow & ":" & copyToRow).Select
ActiveSheet.Paste
copyToRow = copyToRow + 1
Rows(copyToRow & ":" & copyToRow).Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

代わりに私が使用した場合:

Rows("52:52").Select
Selection.Copy

正常に動作しますが、変数があるとエラーが発生します。

ありがとう

4

7 に答える 7

4

一番下のコードをテストしたところ、2 回印刷16384され (私は Excel 2010 を使用しています)、最初の行が選択されます。あなたの問題はどこかにあるようです。

選択を取り除こうとしましたか:

Sheets("BOM").Rows(copyFromRow).Copy
With Sheets("Proposal")
    .Paste Destination:=.Rows(copyToRow)
    copyToRow = copyToRow + 1
    Application.CutCopyMode = False
    .Rows(copyToRow).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End With

コードをテストして、問題が自分の考えとは違うと確信できるようにします。

Sub test()

  Dim r
  Dim i As Long

  i = 1

  r = Rows(i & ":" & i)
  Debug.Print UBound(r, 2)
  r = Rows(i)
  Debug.Print UBound(r, 2)
  Rows(i).Select

End Sub
于 2012-05-14T18:02:24.450 に答える
3

最初にワークシートにも対処することで問題を解決しました:

ws.rows(x & ":" & y).Select

ワークシート (ws) への参照がないと、エラーが発生しました。

于 2018-08-24T21:16:14.960 に答える
2

この回答を別のサイトで見ましたが、私にとってもうまくいきます!

投稿者: Shawn 2001 年 10 月 14 日 1:24 PM

var1 = 1

var2 = 5

Rows(var1 & ":" & var2).Select

それは私にとってはうまくいきました。変数を引用符の外に置いてandステートメント(&)を追加するだけでよいようです

-ショーン

于 2015-04-08T17:33:35.653 に答える
1

キーは、コロンと & を囲む引用符にあります。つまり、rows(variable & ":" & variable).select です。

これを適応させます:

Rows(x & ":" & y).select

x と y は変数です。

理解に役立つその他の例

Rows(x & ":" & x).select

または

Rows((x+1) & ":" (x*3)).select

または

Rows((x+2) & ":" & (y-3)).select

うまくいけば、あなたはアイデアを得る。

于 2016-11-10T17:58:50.597 に答える
0

引用符を追加する必要があります。VBA は翻訳中です

Rows(copyToRow & ":" & copyToRow).Select`

の中へ

 Rows(52:52).Select

変更してみる

Rows(""" & copyToRow & ":" & copyToRow & """).Select
于 2012-05-14T16:43:05.330 に答える