Remediere: VBA runtime error 1004

Configurare noua (How To)

Situatie

Eroarea VBA Runtime Error 1004 apare cel mai des în Excel, când o macrocomandă încearcă să facă o acțiune pe care Excel nu o poate executa: selectare greșită, sheet inexistent, fișier blocat, range invalid, workbook protejat etc.

Cele mai frecvente cauze și remedieri

1. Macro-ul încearcă să selecteze un sheet care nu este activ

Exemplu problematic:

Worksheets("Sheet1").Range("A1").Select

Dacă Sheet1 nu este activ, poate da eroare.

Remediere:

Worksheets("Sheet1").Activate
Worksheets("Sheet1").Range("A1").Select

Sau mai bine, fără Select:

Worksheets("Sheet1").Range("A1").Value = "Test"

2. Numele sheet-ului este greșit

Verifică dacă sheet-ul există exact cu același nume.

Exemplu:

Worksheets("Date").Range("A1").Value = "OK"

Dacă foaia se numește de fapt Data, DATE sau Date cu spațiu la final, apare eroarea.

Remediere:

Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Date")
ws.Range("A1").Value = "OK"

3. Range-ul este invalid

Exemplu problematic:

Range("A0").Select

sau:

Range("A1:A").Select

Remediere:

Range("A1").Select
Range("A1:A100").Select

Pentru ultimul rând:

Dim lastRow As Long
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
Range("A1:A" & lastRow).Select

4. Workbook-ul sau sheet-ul este protejat

Dacă foaia este protejată, macro-ul nu poate modifica celule.

Remediere:

Worksheets("Date").Unprotect Password:="parola"
Worksheets("Date").Range("A1").Value = "Test"
Worksheets("Date").Protect Password:="parola"

Dacă nu are parolă:

Worksheets("Date").Unprotect

5. Fișierul este deschis Read-Only

Verifică dacă fișierul Excel este deschis în mod Read-Only sau dacă este pe un share unde nu ai drepturi de scriere.

Remedieri:

- salvează fișierul local;
- verifică drepturile pe folder;
- închide fișierul de pe alte calculatoare;
- verifică dacă nu este blocat de OneDrive / SharePoint / antivirus.

6. Macro-ul folosește ActiveWorkbook în loc de ThisWorkbook

Dacă ai mai multe fișiere Excel deschise, ActiveWorkbook poate indica alt fișier.

Problematic:

ActiveWorkbook.Worksheets("Date").Range("A1").Value = "Test"

Mai sigur:

ThisWorkbook.Worksheets("Date").Range("A1").Value = "Test"

7. Copiere / lipire eșuată

Eroarea 1004 apare des la:

Selection.PasteSpecial Paste:=xlPasteValues

Remediere mai stabilă:

Worksheets("Sursa").Range("A1:A10").Copy
Worksheets("Destinatie").Range("A1").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False

Sau fără clipboard:

Worksheets("Destinatie").Range("A1:A10").Value = _
Worksheets("Sursa").Range("A1:A10").Value

Solutie

Tip solutie

Permanent

Voteaza

(5 din 7 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?