2017-12-11 21 views
1

生のExcelファイルをカスタマイズされた形式に変換しようとしています。私は下の写真を追加しました。その説明が簡単です。要件としてもステップに取り組んでいきます。Excelでの自動入力VBAエラー1004を返します

1) "Importo"または "Prezzo"を含むすべての列を削除する必要があります 2)残りの列(Quantitá)から日付を抽出する必要があります。まず、空の行を上に挿入し、次に右に適用します(セル、7)。

これまでのところ、とても良いです。 次に、残りの列を自動入力したいのですが、1004エラーが発生します。私はJ:Oから試してみましたが、実際にはJから最後の列まで必要です。私は(最後の行まで動作する)コードを投稿します。

ここで、オートフィルがベストプラクティスであるかどうかは疑問でした。

Sub delete_col() 
Dim A As Range 

    Do 
     Set A = Rows(1).Find(What:="Importo", LookIn:=xlValues, lookat:=xlPart) 
     If A Is Nothing Then Exit Do 
     A.EntireColumn.Delete 
    Loop 

    Do 
     Set A = Rows(1).Find(What:="Prezzo", LookIn:=xlValues, lookat:=xlPart) 
     If A Is Nothing Then Exit Do 
     A.EntireColumn.Delete 
    Loop 

Rows("1:1").Select 
ActiveCell.EntireRow.Insert 

ActiveCell.Range("J1").Select 
ActiveCell.FormulaR1C1 = "=RIGHT(R\[1\]C,7)" 

Selection.AutoFill Destination:=ActiveCell.Range("J1:O1"), Type:=xlFillDefault 

End Sub 

enter image description here

答えて

2

私はラインActiveCell.FormulaR1C1 = "=RIGHT(R\[1\]C,7)"で、\を削除すべきタイプミスのようなもの、であると仮定します。 1004エラーに関する

、その周りに行くための最も簡単な方法は、オートフィルをしている間は、このようなものです:

Sub TestMe() 
    Range("A1:O1") = Range("J1") 
End Sub 

したがって、Range("A1:O1")内のすべての値がRange("J1")から値が設定されます。


はしかし、あなたのコードはSelectActivateActiveCellの多くを使用しています。これらはVBAの優れたプラクティスとはみなされず、異なるエラーが発生する可能性があるため、これらを回避してください。 How to avoid using Select in Excel VBA

+1

多くの感謝!!!はい、書式が付いているはずです。 –

+0

@ MarkusKnopfler - ようこそ:) – Vityata

関連する問題