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
