• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Rub-time error: 1004

Status
Niet open voor verdere reacties.

excel_newbie

Gebruiker
Lid geworden
4 mei 2006
Berichten
11
Run-time error: 1004

Hoi allen,

Ik heb via excel een macro gemaakt, bij het draaien van de macro geeft hij de volgende error: "Run-time error '1004': Application-defined or object-defined error".

Weten jullie hoe het komt en/of weten jullie misschien daar een oplossing voor? Heeft dat met versies/sp's te maken?
 
Laatst bewerkt:
Hoi allen,

Ik heb via excel een macro gemaakt, bij het draaien van de macro geeft hij de volgende error: "Run-time error '1004': Application-defined or object-defined error".

Weten jullie hoe het komt en/of weten jullie misschien daar een oplossing voor? Heeft dat met versies/sp's te maken?

Heeft te maken met de code die je gebruikt. Post die dus, anders kan er weinig gedaan worden.
 
Private Sub CommandButton1_Click()
test_a100
test
CommandButton1.Visible = False
CommandButton1.Enabled = False

End Sub

Sub test_a100()
'


rounding = 3 ' value afronden op 10^ rounding (3 = 10^ 3 = 1000)

' Data range vaststellen
i = 1
Do
i = i + 1
Range("D" & i & ":D" & i).Select
a = Selection.Borders(xlEdgeLeft).LineStyle
Loop While a = -4119
i = i - 1

Range("L" & (i + 1) & ":M" & (i + 1)).Select
TotaalBedrag = ActiveCell.Value

'leegmaken
Selection.ClearContents

Range("L" & i & ":L" & i).Select
ActiveCell.Value = TotaalBedrag * -1

' Data sorteren
Range("D2:M" & i).Select
Selection.Sort Key1:=Range("D2"), Order1:=xlAscending, Key2:=Range("E2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal

' find the end of the data
Range("D" & i & ":D" & i).Select
Do While ActiveCell.Value = ""
Selection.Borders(xlEdgeLeft).LineStyle = 0
i = i - 1
Range("D" & i & ":D" & i).Select
Loop

' concept codes naar 4 cijfers brengen
Range("D2:D" & i).Select
Selection.NumberFormat = "0000"
' values omrekenen naar 1000-en (+3=1000)
Do While i > 1
Range("L" & i & ":L" & i).Select
a = ActiveCell.Value
'a = a / 1000
a = Round(a / 10 ^ rounding)
ActiveCell.Value = a
i = i - 1
Loop

' Layout corrigeren
' De macro is opgenomen op 21-4-2006 door C.
'
Columns("A:A").ColumnWidth = 26
Rows("1:1").RowHeight = 30
Columns("C:C").ColumnWidth = 1
Columns("F:K").ColumnWidth = 0.2


Columns("D:D").ColumnWidth = 9
Columns("E:E").ColumnWidth = 9
Columns("L:L").ColumnWidth = 9
Range("A1:L1").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.Font.Bold = True
End With

Range("A2:A3").MergeCells = True
Range("A4:A5").MergeCells = True
Range("A6:A7").MergeCells = True
Range("A8:A9").MergeCells = True
Range("A10:A11").MergeCells = True
Range("A12:A13").MergeCells = True
Range("A14:A15").MergeCells = True
Range("A16:A17").MergeCells = True
Range("B2:B3").MergeCells = True
Range("B4:B5").MergeCells = True
Range("B6:B7").MergeCells = True
Range("B8:B9").MergeCells = True
Range("B10:B11").MergeCells = True
Range("B12:B13").MergeCells = True
Range("B14:B15").MergeCells = True
Range("B16:B17").MergeCells = True

Range("A2:A17").Select
Selection.Font.Bold = True
Range("A2:A3").Select
ActiveCell.FormulaR1C1 = "SRF number"
Range("A4:A5").Select
ActiveCell.FormulaR1C1 = "Organization code (Funloc)"
Range("A6:A7").Select
ActiveCell.FormulaR1C1 = "Year"
Range("A8:A9").Select
ActiveCell.FormulaR1C1 = "Period"
Range("A10:A11").Select
ActiveCell.FormulaR1C1 = "Consolidation group"
Range("A12:A13").Select
ActiveCell.FormulaR1C1 = "Currency Code"
Range("A14:A15").Select
ActiveCell.FormulaR1C1 = "Notation amounts"
Range("A16:A17").Select
ActiveCell.FormulaR1C1 = "Notation quantities"
Range("A2:B17").Select
With Selection.Interior
.ColorIndex = 34
End With
Range("B2:B3").Select
ActiveCell.FormulaR1C1 = "'A100"
Range("B4:B5").Select
ActiveCell.FormulaR1C1 = "'129933"

Range("P1:P1").Select
a = ActiveCell.Value ' financial period
Range("B6:B7").Select
ActiveCell.FormulaR1C1 = "'" & Mid(a, 1, 4)
Range("B8:B9").Select
ActiveCell.FormulaR1C1 = "'" & Mid(a, 5, 2) & "99"
Range("B10:B11").Select

ActiveCell.FormulaR1C1 = "'670354"
Range("B12:B13").Select
ActiveCell.FormulaR1C1 = "'USD"
Range("B14:B15").Select
ActiveCell.FormulaR1C1 = "'+" & rounding
Range("B16:B17").Select
ActiveCell.FormulaR1C1 = "'+0"

Range("A2:B17").Select
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
End With

Columns("N:P").Select
Selection.ClearContents
Range("A1:A1").Select
End Sub


Sub test()

' Data range vaststellen
j = 1
Do
j = j + 1
Range("D" & j & ":D" & j).Select
b = Selection.Borders(xlEdgeLeft).LineStyle
Loop While b = -4119
j = j - 1

Do While j > 1
Range("M" & j & ":M" & j).Select
b = ActiveCell.Value
'a = Round(a / 10 ^ rounding)
'b = b / 1000 * 1000
ActiveCell.Value = b
j = j - 1
Loop

End Sub
 
dit is alles:

de fout zit bij
' Data sorteren
Range("D2:M" & i).Select
Selection.Sort Key1:=Range("D2"), Order1:=xlAscending, Key2:=Range("E2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal

het rare is dat bij een andere systeem wel werkt office 2003, sp2 en de error dat voorkomt draait op 2000 sp3 en daar werkt het niet
 
Laatst bewerkt:
1. Ooit al gehoord van het declareren van variabelen? :eek: ;)

2. Als je de error krijgt, wijs i dan eens aan. Hoeveel is i op dat moment?

Wigi
 
de i is al gedeclareerd, zie hieronder:

' Data range vaststellen
i = 1
Do
i = i + 1
Range("D" & i & "" & i).Select
a = Selection.Borders(xlEdgeLeft).LineStyle
Loop While a = -4119
i = i - 1

Range("L" & (i + 1) & ":M" & (i + 1)).Select
TotaalBedrag = ActiveCell.Value

'leegmaken
Selection.ClearContents

Range("L" & i & ":L" & i).Select
ActiveCell.Value = TotaalBedrag * -1

' Data sorteren
Range("D2:M" & i).Select
 
de i is al gedeclareerd, zie hieronder:

' Data range vaststellen
i = 1
Do
i = i + 1
Range("D" & i & "" & i).Select
a = Selection.Borders(xlEdgeLeft).LineStyle
Loop While a = -4119
i = i - 1

Range("L" & (i + 1) & ":M" & (i + 1)).Select
TotaalBedrag = ActiveCell.Value

'leegmaken
Selection.ClearContents

Range("L" & i & ":L" & i).Select
ActiveCell.Value = TotaalBedrag * -1

' Data sorteren
Range("D2:M" & i).Select

i is niet gedeclareerd:

Code:
Dim i As Long

bovenaan zetten

Hoeveel is i nu?

PS: ben naar huis, ik lees het vanavond wel.

Wigi
 
Hoi excel_newbie,

Kun je je bestand (ingezipt) hier posten (dus niet alleen de code, maar je hele excel bestand)
 
Hoi excel_newbie,

Kun je je bestand (ingezipt) hier posten (dus niet alleen de code, maar je hele excel bestand)

Hij werkt gewoon bij office 2003, sp2 wel. Maar op een andere versie in office 2000 sp3, werkt die niet, maw ik kan nu niet uittesten want ik zit nu in offce2003 sp2 te werken....
 
Hij werkt gewoon bij office 2003, sp2 wel. Maar op een andere versie in office 2000 sp3, werkt die niet, maw ik kan nu niet uittesten want ik zit nu in offce2003 sp2 te werken....

Maar om je probleem beter te kunnen bekijken, vindt ik het iig makelijker om hele bestand te hebben. En als we er echt niet uitkomen, dan instaleer ik gewoon office 2000 op een Virtuele machine.
Dus als het mogelijk is dan graag het hele bestand (ingezipt)
 
Maar om je probleem beter te kunnen bekijken, vindt ik het iig makelijker om hele bestand te hebben. En als we er echt niet uitkomen, dan instaleer ik gewoon office 2000 op een Virtuele machine.
Dus als het mogelijk is dan graag het hele bestand (ingezipt)
ik mail het wel naar je
 
de fout zit bij
' Data sorteren
Range("D2:M" & i).Select
Selection.Sort Key1:=Range("D2"), Order1:=xlAscending, Key2:=Range("E2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal


Haal het rode gedeelte weg,dan werkt het ook in versies vóór 2003.
 
Ik kan het maandag pas testen op office 2000, bedankt!
kan dat rode stukje vervangen naar een andere code?
 
Laatst bewerkt:
Met weghalen bedoel ik Deleten.
En als je dat doet werkt het ook nog goed in Excel 2003.
 
Hoi excel_newbie,

LucB heeft helemaal gelijk :thumb: . Ik heb hem ff op een office 2000 uitgeprobeer en idd, als je het rode gedeelte van LucB weg haalt, loopt hij daar gewoon door.

Wel zeg ik erbij dat deze code, niet de meest nette is die ik ooit heb gezien.

Zoals Wigi al zei
i is niet gedeclareerd:

Dim i As Long

Ook select wordt vaker gebruikt dan nodig is
 
Ook select wordt vaker gebruikt dan nodig is

excel_newbie

Er is nog leven naast de macro recorder...

Probeer doorheen de code te gaan en dingen zoals

Code:
Range("A2:A17").Select
Selection.Font.Bold = True
Range("A2:A3").Select
ActiveCell.FormulaR1C1 = "SRF number"

te veranderen in

Code:
Range("A2:A17").Font.Bold = True

en

Code:
Range("A2:A17").Select
Selection.Font.Bold = True
Range("A2:A3").Select
ActiveCell.FormulaR1C1 = "SRF number"

in

Code:
Range("A2:A3").Value = "SRF number"

en zo kan je nog veel meer veranderen. Je code zal korter worden en VEEEEEL sneller uitgevoerd zijn.

Wigi
 
de fout zit bij
' Data sorteren
Range("D2:M" & i).Select
Selection.Sort Key1:=Range("D2"), Order1:=xlAscending, Key2:=Range("E2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal


Haal het rode gedeelte weg,dan werkt het ook in versies vóór 2003.

Luc: top man! Had ik lang over gedaan om dat te vinden...
 
Zou je de vraag op opgelost willen zetten?
Zo houden we het overzicht op beantwoorde en niet beantwoorde vragen.

Bedankt,
Ferenc
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan