42

範囲を選択すると、エラー 1004「アプリケーション定義またはオブジェクト定義のエラー」という問題が発生します。

行 (つまりRows("21:21").select) を選択し、同じワークブックの他のシートで範囲を選択することはできます。エラーがコードにあるとは思いません。たぶん、私が知らない設定ですか?

以前にまったく同じコードを何度も使用しましたが、何らかの理由でこのサブで機能させることができません(エラーが発生した場所をコメントしました)...

Sub CopySheet1_to_PasteSheet2()

    Dim CLastFundRow As Integer
    Dim CFirstBlankRow As Integer

    'Finds last row of content
    Windows("Excel.xlsm").Activate
    Sheets("Sheet1").Activate
    Range("C21").Select
         '>>>Error 1004 "Application-defined or Object-defined error" Occurs
    Selection.End(xlDown).Select
    CLastFundRow = ActiveCell.Row
    'Finds first row without content
    CFirstBlankRow = CLastFundRow + 1

    'Copy Data
    Range("A21:C" & CLastFundRow).Select
    Selection.Copy
    'Paste Data Values
    Sheets("PalTrakExport PortfolioAIdName").Select
    Range("A21").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

    'Bring back to top of sheet for consistancy
    Range("A21").Select
    Range("A1").Select
End Sub

行の量は頻繁に変化するため、コピーには気を配る必要があります。繰り返しますが、以下のコードは以前にエラーなしで使用されていましたが、この例では使用されていません。

Dim CLastFundRow As Integer
Dim CFirstBlankRow As Integer

'Finds last row of content
Windows("Excel.xlsm").Activate
Sheets("Sheet1").Activate
Range("C21").Select
     '>>>Error 1004 "Application-defined or Object-defined error" Occurs
Selection.End(xlDown).Select
CLastFundRow = ActiveCell.Row
'Finds first row without content
CFirstBlankRow = CLastFundRow + 1
4

18 に答える 18

21

遅くなりましたが、今後の参考になれば幸いです。同じ問題が発生したばかりで、マクロがワークシート レベルに配置されたためだと思います。VBA プロジェクト ウィンドウのモジュール ノードを右クリックし、[挿入] => [モジュール] をクリックして、新しいモジュールにマクロを貼り付けます (ワークシート レベルで記録されたものを必ず削除してください)。

于 2014-05-30T04:58:39.507 に答える
8

同じことが私にも起こりました。私の場合、ほとんどのワークシートは保護モードでした (ただし、マクロに関連するセルはロック解除されていました)。ワークシートの保護を無効にすると、マクロは正常に機能しました...マクロで使用されていなくても、VBAはロックされたセルを好まないようです。

于 2014-05-30T12:38:15.780 に答える
1

次のコードを使用できます (たとえば、セル データを から にコピーする場合Sheet2) Sheet1

Sub Copy
Worksheets("Sheet1").Activate                    
Worksheets("Sheet1").Range(Cells(i, 6), Cells(i, FullPathLastColumn)).Copy_
Destination:=Worksheets("Sheet2").Cells(Path2Row, Path2EndColumn + 1)
End Sub
于 2016-08-31T13:20:15.510 に答える