[gelöst] Was bedeutet diese Fehlermeldung?

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

kilix
***
Beiträge: 80
Registriert: So, 09.04.2023 11:27

[gelöst] Was bedeutet diese Fehlermeldung?

Beitrag von kilix »

Hallo,
ich habe einen Makro der eine CSV-Datei einliest, in eine ODS übernimmt und bearbeitet. Während des Durchlaufs erscheint die folgende Fehlermeldung:
Fehlermeldung.jpg
Fehlermeldung.jpg (9.16 KiB) 1245 mal betrachtet
Diese Meldung kommt aber nich bei jedem Durchlauf sondern nur etwa jedes 2. oder 3.mal. Wenn man sie mit Enter quittiert läuft das Makro ordnungsgemäß ab.
Leider gelingt es mir nicht herauszufinden welcher Befehl diese Meldung auslöst. Wenn ich Hinweise auf die Aussage der Fehlermeldung hätte könnte ich die Fehlerstelle vielleicht besser eingenzen. Ich habe schon mit Stop und Print versucht sie einzugrenzen was mir aber nicht gelungen. Ich kann mir auch nicht vorstellen um welche Funktion es sich dabei handeln kann, da ich den größten Teil des Makros aufgezeichnet habe.
Zuletzt geändert von kilix am So, 02.07.2023 18:23, insgesamt 1-mal geändert.
Grüße
kilix
mikeleb
*******
Beiträge: 1262
Registriert: Fr, 09.12.2011 16:50

Re: Was bedeutet diese Fehlermeldung?

Beitrag von mikeleb »

Hallo,
wenn man eine Mehrfachselektion vornimmt, also mehrere, nicht zusammenhängende Bereiche auswählt, dann sind gewisse Operationen (z. B. das Einfügen mehrerer Zellen) nicht möglich. Das diese Fehlermeldung die einer Makrosausführung erscheint ist ungewöhnlich.
Leider gelingt es mir nicht herauszufinden welcher Befehl diese Meldung auslöst.
Dazu wäre es schon hilfreich, das Makro zu kennen. Bitte einmal posten.
Gruß,
mikeleb
kilix
***
Beiträge: 80
Registriert: So, 09.04.2023 11:27

Re: Was bedeutet diese Fehlermeldung?

Beitrag von kilix »

Ich habe die Makros, es sind doch einige und ich konnte auch nicht eindeutig feststellen in welchem der Fehler auftritt, ursprünglich wegen ihrer Länge nicht beigelegt. Nachdem es sich dabei aber um einen (organisatorisch) relativ aufwändigen Konstrukt handelt habe ich jetzt alles hereinkopiert.

Code: Alles auswählen

Sub SiFo_Aktualisieren

	'Zugriff auf die aktuelle Datei
	oDoc=ThisComponent
	
	'JumpToSheetsName
	oView = oDoc.CurrentController
	oSheet = oDoc.Sheets.getByName("SiFo")
	oView.setActiveSheet(oSheet)

	rem get access to the document
	document   = ThisComponent.CurrentController.Frame
	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
	
	'Startmeldung
	dim args1(0) as new com.sun.star.beans.PropertyValue
	args1(0).Name = "ToPoint"
	args1(0).Value = "$F$1"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

	dim args2(0) as new com.sun.star.beans.PropertyValue
	args2(0).Name = "StringName"
	args2(0).Value = "Tabelle wird aktualisiert"
	dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2())

	SiKo_CSV_Import
	SiKo_ID_finden
	SiFo_CSV_Import
	SiFo_Zeilen_markieren
	SiFo_Ueberschuss_loeschen
	SiFo_Spalten_kopieren
	
	'Fertigmeldung
	dim args3(0) as new com.sun.star.beans.PropertyValue
	args3(0).Name = "ToPoint"
	args3(0).Value = "$F$1"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
	
	dim args4(0) as new com.sun.star.beans.PropertyValue
	args4(0).Name = "StringName"
	args4(0).Value = "Tabelle ist aktuell"
	dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args4())
	wait 1000
	
	dim args6(0) as new com.sun.star.beans.PropertyValue
	args6(0).Name = "Nr"
	args6(0).Value = 1
	dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args6())

	dim args7(0) as new com.sun.star.beans.PropertyValue
	args7(0).Name = "ToPoint"
	args7(0).Value = "$C$3"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args7())

End Sub


Sub SiKo_CSV_Import

	'Zugriff auf die aktuelle Datei
	oDoc=ThisComponent
	
	'Öffnen der csv-Datei
	Dim args(1) as New com.sun.star.beans.PropertyValue
	args(0).Name= "FilterName"
	args(0).Value = "Text - txt - csv (StarCalc)"
	
	'ASCII-Codes 44 (Komma), 32 (Leerzeichen), 9 (Tabulator)
	'Mehrfachauswahl durch / trennen, z. B. 44/9
	sFeldSeparator="44"
	'ASCII-Codes 34 (doppelte Hochkomma), 39 (einfache Hochkomma)
	sTextBegrenzer="34"
	'Systemzeichensatz 0 - I: Unicode (UTF.8): 76
	sZeichensatz="76"
	'erste einzulesende Zeile
	sErste="1"
	'Spaltenformat für jede Spalte festlegen
	'Spalte/Format/Spalte/Format/...
	'Formate: 1 Standard, 2 Text, 3 Datum (MTJ), 4 Datum (TMJ), 5 Datum (JMT), 9 nicht importieren, 10 US-englisch
	'nicht aufgeführte Spalten werden als Standard importiert
	sSpaltenFormate="1/1/2/2/3/2"
	args(1).Name="FilterOptions"
	args(1).Value =sFeldSeparator & "," & sTextBegrenzer & "," & sZeichensatz & "," & sErste & "," & sSpaltenformate

	'Aktuelles Verzeichnis einlesen und Datei Sassen.csv öffnen
	surl = thiscomponent.url
	apfad = split(surl,"/")
	apfad(ubound(apfad)) = "sippungskopf.csv"
   	sURL = convertToURL(join(apfad,"/"))
   	oCSV = StarDesktop.LoadComponentFromURL(sURL, "_blank", 0, args())
   	
	'1: Auslesen der Daten in ein Array der Daten
	aDaten=oCSV.Sheets(0).getCellRangeByName("A1:C500").getDataArray
	'Schreiben der Daten in die aktuelle Datei
	oDoc.Sheets(4).getCellRangeByName("K3:M502").setDataArray(aDaten)
	
	'CSV-Datei schließen
	oCSV.close(false)
	
End Sub


sub SiKo_ID_finden

	rem define variables
	dim document   as object
	dim dispatcher as object

	rem get access to the document
	document   = ThisComponent.CurrentController.Frame
	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

	dim args1(0) as new com.sun.star.beans.PropertyValue
	args1(0).Name = "ToPoint"
	args1(0).Value = "$J$4"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

	dim args2(0) as new com.sun.star.beans.PropertyValue
	args2(0).Name = "StringName"
	args2(0).Value = "=WENN(UND(WERT(L4)=Parameter.D$4;WERT(M4)=WERT(LINKS(Parameter.D$6;3))+1859);9;0)"

	dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2())
	dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

	dim args4(0) as new com.sun.star.beans.PropertyValue
	args4(0).Name = "ToPoint"
	args4(0).Value = "$J$5"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args4())

	dim args5(1) as new com.sun.star.beans.PropertyValue
	args5(0).Name = "By"
	args5(0).Value = 1
	args5(1).Name = "Sel"
	args5(1).Value = true
	dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args5())

	dim args6(1) as new com.sun.star.beans.PropertyValue
	args6(0).Name = "By"
	args6(0).Value = 1
	args6(1).Name = "Sel"
	args6(1).Value = true
	dispatcher.executeDispatch(document, ".uno:GoDownToEndOfData", "", 0, args6())

	dim args7(1) as new com.sun.star.beans.PropertyValue
	args7(0).Name = "By"
	args7(0).Value = 1
	args7(1).Name = "Sel"
	args7(1).Value = true
	dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args7())
	dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())

	dim args9(0) as new com.sun.star.beans.PropertyValue
	args9(0).Name = "ToPoint"
	args9(0).Value = "$G$1"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args9())

	dim args10(0) as new com.sun.star.beans.PropertyValue
	args10(0).Name = "StringName"
	args10(0).Value = "=SVERWEIS(9;J4:K500;2;1)"
	dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args10())
	dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

	dim args12(0) as new com.sun.star.beans.PropertyValue
	args12(0).Name = "ToPoint"
	args12(0).Value = "$H$1"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args12())

	dim args13(0) as new com.sun.star.beans.PropertyValue
	args13(0).Name = "ToPoint"
	args13(0).Value = "$G$1"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args13())

	dim args14(5) as new com.sun.star.beans.PropertyValue
	args14(0).Name = "Flags"
	args14(0).Value = "SVD"
	args14(1).Name = "FormulaCommand"
	args14(1).Value = 0
	args14(2).Name = "SkipEmptyCells"
	args14(2).Value = false
	args14(3).Name = "Transpose"
	args14(3).Value = false
	args14(4).Name = "AsLink"
	args14(4).Value = false
	args14(5).Name = "MoveMode"
	args14(5).Value = 4
	dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args14())

	dim args15(0) as new com.sun.star.beans.PropertyValue
	args15(0).Name = "ToPoint"
	args15(0).Value = "J1:M500"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args15())
	dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())

	dim args17(0) as new com.sun.star.beans.PropertyValue
	args17(0).Name = "Flags"
	args17(0).Value = "L"
	dispatcher.executeDispatch(document, ".uno:DeleteCell", "", 0, args17())

end sub

Sub SiFo_CSV_Import

	'Zugriff auf die aktuelle Datei
	oDoc=ThisComponent

	'Öffnen der csv-Datei
	Dim args(1) as New com.sun.star.beans.PropertyValue
	args(0).Name= "FilterName"
	args(0).Value = "Text - txt - csv (StarCalc)"

	'ASCII-Codes 44 (Komma), 32 (Leerzeichen), 9 (Tabulator)
	'Mehrfachauswahl durch / trennen, z. B. 44/9
	sFeldSeparator="44"
	'ASCII-Codes 34 (doppelte Hochkomma), 39 (einfache Hochkomma)
	sTextBegrenzer="34"
	'Systemzeichensatz 0 - I: Unicode (UTF.8): 76
	sZeichensatz="76"
	'erste einzulesende Zeile
	sErste="1"
	'Spaltenformat für jede Spalte festlegen
	'Spalte/Format/Spalte/Format/...
	'Formate: 1 Standard, 2 Text, 3 Datum (MTJ), 4 Datum (TMJ), 5 Datum (JMT), 9 nicht importieren, 10 US-englisch
	'nicht aufgeführte Spalten werden als Standard importiert
	sSpaltenFormate="2/1/3/1/4/1/5/1/7/2"
	args(1).Name="FilterOptions"
	args(1).Value =sFeldSeparator & "," & sTextBegrenzer & "," & sZeichensatz & "," & sErste & "," & sSpaltenformate

	'Aktuelles Verzeichnis einlesen und Datei Sippungsfolgen.csv öffnen
	surl = thiscomponent.url
	apfad = split(surl,"/")
	apfad(ubound(apfad)) = "sippungsfolgen.csv"
   	sURL = convertToURL(join(apfad,"/"))
   	oCSV = StarDesktop.LoadComponentFromURL(sURL, "_blank", 0, args())

	'1: Auslesen der Daten in ein Array der Daten
	aDaten=oCSV.Sheets(0).getCellRangeByName("B1:E20000").getDataArray
	'Schreiben der Daten in die aktuelle Datei
	oDoc.Sheets(4).getCellRangeByName("K3:N20002").setDataArray(aDaten)
	'2: Auslesen der Daten in ein Array der Daten
	aDaten=oCSV.Sheets(0).getCellRangeByName("G1:G20000").getDataArray
	'Schreiben der Daten in die aktuelle Datei
	oDoc.Sheets(4).getCellRangeByName("O3:O20002").setDataArray(aDaten)
	
	'CSV-Datei schließen
	oCSV.close(false)
	
End Sub

sub SiFo_Zeilen_markieren

	rem define variables
	dim document   as object
	dim dispatcher as object

	rem get access to the document
	document   = ThisComponent.CurrentController.Frame
	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

	dim args1(0) as new com.sun.star.beans.PropertyValue
	args1(0).Name = "ToPoint"
	args1(0).Value = "$J$4"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

	dim args2(0) as new com.sun.star.beans.PropertyValue
	args2(0).Name = "StringName"
	args2(0).Value = "=WENN(UND(K4=WERT(G$1);WERT(L4)>0);"+CHR$(34)+"X"+CHR$(34)+";"+CHR$(34)+CHR$(34)+")"
	dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2())
	dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

	dim args4(0) as new com.sun.star.beans.PropertyValue
	args4(0).Name = "ToPoint"
	args4(0).Value = "$J$5"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args4())

	dim args5(1) as new com.sun.star.beans.PropertyValue
	args5(0).Name = "By"
	args5(0).Value = 1
	args5(1).Name = "Sel"
	args5(1).Value = true
	dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args5())

	dim args6(1) as new com.sun.star.beans.PropertyValue
	args6(0).Name = "By"
	args6(0).Value = 1
	args6(1).Name = "Sel"
	args6(1).Value = true
	dispatcher.executeDispatch(document, ".uno:GoDownToEndOfData", "", 0, args6())

	dim args7(1) as new com.sun.star.beans.PropertyValue
	args7(0).Name = "By"
	args7(0).Value = 1
	args7(1).Name = "Sel"
	args7(1).Value = true
	dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args7())
	dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())

	dim args16(0) as new com.sun.star.beans.PropertyValue
	args16(0).Name = "ToPoint"
	args16(0).Value = "J4:O25000"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args16())

	dim args17(8) as new com.sun.star.beans.PropertyValue
	args17(0).Name = "ByRows"
	args17(0).Value = true
	args17(1).Name = "HasHeader"
	args17(1).Value = false
	args17(2).Name = "CaseSensitive"
	args17(2).Value = false
	args17(3).Name = "IncludeAttribs"
	args17(3).Value = true
	args17(4).Name = "UserDefIndex"
	args17(4).Value = 0
	args17(5).Name = "Col1"
	args17(5).Value = 10
	args17(6).Name = "Ascending1"
	args17(6).Value = false
	args17(7).Name = "Col2"
	args17(7).Value = 10
	args17(8).Name = "Ascending2"
	args17(8).Value = true
	dispatcher.executeDispatch(document, ".uno:DataSort", "", 0, args17())

	dim args18(0) as new com.sun.star.beans.PropertyValue
	args18(0).Name = "ToPoint"
	args18(0).Value = "$J$1"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args18())

end sub


sub SiFo_Ueberschuss_loeschen

	rem define variables
	dim document   as object
	dim dispatcher as object

	rem get access to the document
	document   = ThisComponent.CurrentController.Frame
	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

	dim args1(0) as new com.sun.star.beans.PropertyValue
	args1(0).Name = "ToPoint"
	args1(0).Value = "$J$1"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
	dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

	dim args3(0) as new com.sun.star.beans.PropertyValue
	args3(0).Name = "ToPoint"
	args3(0).Value = "$A$34:$O$25000"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())

	dim args4(0) as new com.sun.star.beans.PropertyValue
	args4(0).Name = "Flags"
	args4(0).Value = "U"
	dispatcher.executeDispatch(document, ".uno:DeleteCell", "", 0, args4())

	dim args5(0) as new com.sun.star.beans.PropertyValue
	args5(0).Name = "ToPoint"
	args5(0).Value = "$L$4"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args5())

end sub


sub SiFo_Spalten_kopieren

	rem define variables
	dim document   as object
	dim dispatcher as object

	rem get access to the document
	document   = ThisComponent.CurrentController.Frame
	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

	dim args1(0) as new com.sun.star.beans.PropertyValue
	args1(0).Name = "ToPoint"
	args1(0).Value = "L4:L500"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
	dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

	dim args3(0) as new com.sun.star.beans.PropertyValue
	args3(0).Name = "ToPoint"
	args3(0).Value = "$B$4"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())

	dim args4(5) as new com.sun.star.beans.PropertyValue
	args4(0).Name = "Flags"
	args4(0).Value = "SVD"
	args4(1).Name = "FormulaCommand"
	args4(1).Value = 0
	args4(2).Name = "SkipEmptyCells"
	args4(2).Value = false
	args4(3).Name = "Transpose"
	args4(3).Value = false
	args4(4).Name = "AsLink"
	args4(4).Value = false
	args4(5).Name = "MoveMode"
	args4(5).Value = 4
	dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args4())

	dim args5(0) as new com.sun.star.beans.PropertyValue
	args5(0).Name = "ToPoint"
	args5(0).Value = "$N$4"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args5())

	dim args6(0) as new com.sun.star.beans.PropertyValue
	args6(0).Name = "ToPoint"
	args6(0).Value = "N4:N500"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args6())
	dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

	dim args8(0) as new com.sun.star.beans.PropertyValue
	args8(0).Name = "ToPoint"
	args8(0).Value = "$C$4"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args8())

	dim args9(5) as new com.sun.star.beans.PropertyValue
	args9(0).Name = "Flags"
	args9(0).Value = "SVD"
	args9(1).Name = "FormulaCommand"
	args9(1).Value = 0
	args9(2).Name = "SkipEmptyCells"
	args9(2).Value = false
	args9(3).Name = "Transpose"
	args9(3).Value = false
	args9(4).Name = "AsLink"
	args9(4).Value = false
	args9(5).Name = "MoveMode"
	args9(5).Value = 4
	dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args9())

	dim args10(0) as new com.sun.star.beans.PropertyValue
	args10(0).Name = "ToPoint"
	args10(0).Value = "$M$4"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args10())

	dim args11(0) as new com.sun.star.beans.PropertyValue
	args11(0).Name = "ToPoint"
	args11(0).Value = "M4:M500"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args11())
	dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

	dim args13(0) as new com.sun.star.beans.PropertyValue
	args13(0).Name = "ToPoint"
	args13(0).Value = "$D$4"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args13())

	dim args14(5) as new com.sun.star.beans.PropertyValue
	args14(0).Name = "Flags"
	args14(0).Value = "SVD"
	args14(1).Name = "FormulaCommand"
	args14(1).Value = 0
	args14(2).Name = "SkipEmptyCells"
	args14(2).Value = false
	args14(3).Name = "Transpose"
	args14(3).Value = false
	args14(4).Name = "AsLink"
	args14(4).Value = false
	args14(5).Name = "MoveMode"
	args14(5).Value = 4
	dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args14())

	dim args15(0) as new com.sun.star.beans.PropertyValue
	args15(0).Name = "ToPoint"
	args15(0).Value = "$O$4"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args15())

	dim args16(0) as new com.sun.star.beans.PropertyValue
	args16(0).Name = "ToPoint"
	args16(0).Value = "O4:O500"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args16())
	dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

	dim args18(0) as new com.sun.star.beans.PropertyValue
	args18(0).Name = "ToPoint"
	args18(0).Value = "$F$4"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args18())

	dim args19(5) as new com.sun.star.beans.PropertyValue
	args19(0).Name = "Flags"
	args19(0).Value = "SVD"
	args19(1).Name = "FormulaCommand"
	args19(1).Value = 0
	args19(2).Name = "SkipEmptyCells"
	args19(2).Value = false
	args19(3).Name = "Transpose"
	args19(3).Value = false
	args19(4).Name = "AsLink"
	args19(4).Value = false
	args19(5).Name = "MoveMode"
	args19(5).Value = 4
	dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args19())

	dim args20(0) as new com.sun.star.beans.PropertyValue
	args20(0).Name = "ToPoint"
	args20(0).Value = "$G$1"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args20())

	dim args21(0) as new com.sun.star.beans.PropertyValue
	args21(0).Name = "StringName"
	args21(0).Value = ""
	dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args21())

	dim args22(0) as new com.sun.star.beans.PropertyValue
	args22(0).Name = "ToPoint"
	args22(0).Value = "$J$1"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args22())

	dim args23(0) as new com.sun.star.beans.PropertyValue
	args23(0).Name = "ToPoint"
	args23(0).Value = "J1:O510"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args23())

	dim args24(0) as new com.sun.star.beans.PropertyValue
	args24(0).Name = "Flags"
	args24(0).Value = "L"
	dispatcher.executeDispatch(document, ".uno:DeleteCell", "", 0, args24())
	
	dim args25(0) as new com.sun.star.beans.PropertyValue
	args25(0).Name = "ToPoint"
	args25(0).Value = "$A$3"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args25())

end sub
Der Fehler bzw. die Ursache der Meldung, den nach Bestätigung mit Enter werden alle folgenden Befehle fehlrfrei ausgeführt, scheint im Bereich der Sub SiKo_ID_finden zu liegen, kann aber auch danach sein. Für mich seltsam ist auch, dass fast alles, außer dem Auslesen der CSV-Datein (dieser Code wurde von deinem früher geposteten Beispiel abgeleitet, mitgeschrieben, also von OO generiert wurde.

Ergänzung: interessant ist auch, dass diese Meldung intermittierend auftritt, was ja bei Software eher nicht vorkommet.
Grüße
kilix
Karolus
********
Beiträge: 7376
Registriert: Mo, 02.01.2006 19:48

Re: Was bedeutet diese Fehlermeldung?

Beitrag von Karolus »

Hallo
Es wäre jetzt wohl der richtige Zeitpunkt diese ~500Zeilen Aufgezeichneten-Kraut-Und-Rüben-Code wegzuwerfen !
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
mikeleb
*******
Beiträge: 1262
Registriert: Fr, 09.12.2011 16:50

Re: Was bedeutet diese Fehlermeldung?

Beitrag von mikeleb »

Hallo,
mal am Beispiel der ersten angedeutet, was karolus meint:

Code: Alles auswählen

Sub SiFo_Aktualisieren

	'Zugriff auf die aktuelle Datei
	oDoc=ThisComponent
	
	'aktiviere die Tabelle SiFo
	oView = oDoc.CurrentController
	oSheet = oDoc.Sheets.getByName("SiFo")
	oView.setActiveSheet(oSheet)

	oSheet.getCellRangeByName("F1").String="Tabelle wird aktualisiert"

	SiKo_CSV_Import
	SiKo_ID_finden
	SiFo_CSV_Import
	SiFo_Zeilen_markieren
	SiFo_Ueberschuss_loeschen
	SiFo_Spalten_kopieren
	
	'Fertigmeldung
	oSheet.getCellRangeByName("F1").String= "Tabelle ist aktuell"
	wait 1000
	
	oView.setActiveSheet(oDoc.Sheets(0))

End Sub
Gruß,
mikeleb
kilix
***
Beiträge: 80
Registriert: So, 09.04.2023 11:27

Re: Was bedeutet diese Fehlermeldung?

Beitrag von kilix »

Ich verstehe nicht was daran Kraut und Rüben sein soll. Es ist die logische Folge von Funktionen die in dieser Reihenfolge durchgeführt werden müssen. Dabei wurden alle Subs mit Ausnahme der 2 die CSV.Dateien einlesen nicht programmiert sondern mitgeschrieben.
Grüße
kilix
Karolus
********
Beiträge: 7376
Registriert: Mo, 02.01.2006 19:48

Re: Was bedeutet diese Fehlermeldung?

Beitrag von Karolus »

kilix hat geschrieben: Mi, 07.06.2023 22:46 Ich verstehe nicht was daran Kraut und Rüben sein soll. Es ist die logische Folge von Funktionen die in dieser Reihenfolge durchgeführt werden müssen. Dabei wurden alle Subs mit Ausnahme der 2 die CSV.Dateien einlesen nicht programmiert sondern mitgeschrieben.
Dann stell dir mal vor du bekommst diese 500Zeilen-wurst (ohne Kontext) vorgesetzt und sollst das debuggen!
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
kilix
***
Beiträge: 80
Registriert: So, 09.04.2023 11:27

Re: Was bedeutet diese Fehlermeldung?

Beitrag von kilix »

Genau das war der Grund weshalb ich den Code ursprünglich nicht gesendet habe - im Übrigen habe ich in meinem Post mit dem Makro einen Hinweis auf den Bereich gegeben in dem ich die Ursache vermute (mehr als vermuten kann ich nicht)!
Ich werde mir das ganze nochmals - sobald ich dafür Zeit habe - ansehen. Für mich sieht das eher wie eine Warnung aus denn nach dem Quittieren läuft das Makro fehlerfrei durch. Außerdem erscheint diese Meldung auch intermittierend, also gibt es zwischendurch offenbar keine Probleme.
Eine Idee kam mir jetzt mit dem Schreiben: vielleicht bleibt nach einem Makrodurchlauf irgend etwas zurück, das ich mir zwar nicht erklären kann, das aber beim nächsten Durchlauf zu dieser Meldung führt. Ich werde das so testen, dass ich das Makro ein paarmal in Folge und dann mit Abstand (andere Makros in der Zwischenzeit) ausprobieren. Trifft die Idee zu dann sollte die Meldung im zweiten Fall nicht kommen.
Ich melde mich wieder, bis dahin lassen wir das Kraut und die Rüben liegen.
Grüße
kilix
Benutzeravatar
balu
********
Beiträge: 3807
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Was bedeutet diese Fehlermeldung?

Beitrag von balu »

Hallo kilix.

"Was bedeutet diese Fehlermeldung?"
Ist doch einfach.
A1:A10 ist ein Bereich.
K100:K110 ist ein Bereich.
(A1:A10;K100:110) ist eine Mehrfachselektion (Mehrfachbereich).
Es gibt Funktionen die können nicht auf Mehrfachselektion angewendet werden.

Deine aufgezeichneten Code-Segmente fallen unter den Begriff "Dispatcher". Das ist wohl manchmal wirklich ganz gut und schön, aber für umfangreichere Programme ist das einfach nur absoluter MIST! Und das bestätigt sich ja in deinem Falle. Du hast nur aufgezeichnet, aber Du weisst nicht genau was da eigentlich abläuft. Und jetzt stehst Du wie der Ochs vorm Scheunentor und weisst nicht weiter. Mit anderen Worten. "Lern richtig zu programmieren!"

Ich wette Du hast Karolus hiermit
Karolus hat geschrieben: Do, 08.06.2023 08:57 Dann stell dir mal vor du bekommst diese 500Zeilen-wurst (ohne Kontext) vorgesetzt und sollst das debuggen!
nicht richtig verstanden. Um aber dieses defizit auszugleichen setzen wir das mal Praktisch in die Tat um.
Im folgendem Code tritt dieser Fehler auf:
fehler.jpg
fehler.jpg (12.56 KiB) 1132 mal betrachtet
Jetzt sollst DU kilix den Fehler verstehen, suchen, finden und beseitigen. Viel Spaß auch dabei :lol: .

Code: Alles auswählen

	Public aLabels(99)
	Public BtnFaHelpIcon(1) as String

Sub MonatlicheFarben
	oHptDialog.setVisible(false)
	oHptDialog.isVisible(false)		
	wait 50
'--------------------------------------------------------------------------------------------------------------------------
	for lavf = 0 to 99
		aLabels(lavf) = oFarbDialog.getControl("Label" & lavf +1).Model
	next lavf
'--------------------------------------------------------------------------------------------------------------------------
	iFaPal = 0
	iFNa = 1
	Fuellen
'--------------------------------------------------------------------------------------------------------------------------
	oFarbDialog.Model.PositionX = 305
	oFarbDialog.Model.PositionY = 12
'--------------------------------------------------------------------------------------------------------------------------	
	ThisComponent.CurrentController.ColumnRowHeaders = false
	ThisComponent.CurrentController.ShowGrid = false
'--------------------------------------------------------------------------------------------------------------------------
	oLab102 = oFarbDialog.getControl("Label102").Model
	oLab102.backgroundcolor = BackFarbe
	oLab102.TextColor = FontFarbe	
'--------------------------------------------------------------------------------------------------------------------------
	oFarbDialog.getControl("Label103").Text = " " & BackFarbName
	oFarbDialog.getControl("Label104").Text = " " & FontFarbName
'--------------------------------------------------------------------------------------------------------------------------
	odraw = oPreview.drawpage
	Form1 = odraw.Forms.getbyIndex(0)
	oFormularButton = Form1.getbyname("Schaltfläche 1")
	oFormularButton.BackgroundColor = BackFarbe
	oFormularButton.TextColor =	FontFarbe	
	oFormularButton.Label = oMonat.SelectedItem
'--------------------------------------------------------------------------------------------------------------------------
	oFarbDialog.getControl("Label102").Text = "Datei ist nur für" & CHR(13) & oMonat.SelectedItem & " " & oJahr.SelectedItem & CHR(13) & "gültig!"	
'--------------------------------------------------------------------------------------------------------------------------
	oZellBereich = oPreview.getCellRangeByName("A1:G7")
	oZellBereich.CellBackColor = BackFarbe
	oZellBereich.charcolor = FontFarbe
'--------------------------------------------------------------------------------------------------------------------------
	oPreview.isvisible = True
'--------------------------------------------------------------------------------------------------------------------------
	myView4 = ThisComponent.CurrentController
	oSheet4 = ThisComponent.Sheets(2)
	myView4.setActiveSheet(oSheet4)
'--------------------------------------------------------------------------------------------------------------------------	
	BtnFaHelpIcon(1) = "sHilfe.png"
	oFarbDialog.Model.GetByName("BtnHelpFarbe").ImageURL = tempInit & "/" & BtnFaHelpIcon(1)
	oFarbDialog.setVisible(true)
	oFarbDialog.isVisible(true)	
'--------------------------------------------------------------------------------------------------------------------------
end sub
'
'###########################################################################################################################
'
sub MonatlicheFarbenBeenden	
	myView3 = ThisComponent.CurrentController
	oSheet3 = ThisComponent.Sheets(3)
	oPreview.isvisible = False
	myView3.setActiveSheet(oSheet3)	
'--------------------------------------------------------------------------------------------------------------------------
	oHptDialog.Model.PositionX = 11
	oHptDialog.Model.PositionY = 12
'--------------------------------------------------------------------------------------------------------------------------
						BruchStatus
'--------------------------------------------------------------------------------------------------------------------------
	For fapin = 1 to 6
		oLab300 = oHptDialog.getControl("Label" & fapin +300).Model
		oLab300.backgroundcolor = HintergrundFarbe
		oLab300.TextColor = SchriftFarbe
	next fapin
'--------------------------------------------------------------------------------------------------------------------------
		oHptDialog.getControl("Label305").Text = " " & CHR$(13) & oMonat.SelectedItem
		oHptDialog.getControl("Label306").Text = "Datei ist nur für" & CHR(13) & oMonat.SelectedItem & " " & oJahr.SelectedItem & CHR(13) & "gültig!"	
'--------------------------------------------------------------------------------------------------------------------------	
	for btnicoi = 1 to 9
		oHptDialog.Model.GetByName(BtnHilfe(1, btnicoi)).ImageURL = tempInit & "/" & btnico(2)
	next btnicoi
'--------------------------------------------------------------------------------------------------------------------------
	oHptDialog.Model.Step = 3
End Sub
'
'###########################################################################################################################
'
Sub FarbeSetzen(oEvent) 
	oLesen = oEvent.Source.Model.Name
	FabNr = Val(right(oLesen, len(oLesen) -5))
'--------------------------------------------------------------------------------------------------------------------------
	odraw = oPreview.drawpage
	Form1 = odraw.Forms.getbyIndex(0)
	oFormularButton = Form1.getbyname("Schaltfläche 1")	
'--------------------------------------------------------------------------------------------------------------------------			
		oZellBereich = oPreview.getCellRangeByName("A1:G7")
'--------------------------------------------------------------------------------------------------------------------------					
	if oFarbDialog.getControl("OptionButton3").Model.state = 1 Then 
		oFarbDialog.getControl("Label102").Model.backgroundcolor = FaLi(iFaPal, FabNr -1)
			oZellBereich.CellBackColor = FaLi(iFaPal, FabNr -1)
	
				BackFarbe = FaLi(iFaPal, FabNr -1)
				BackFarbName = FaLi(iFNa, FabNr -1)

					oFormularButton.BackgroundColor = FaLi(iFaPal, FabNr -1)
					oFarbDialog.getControl("Label103").Text = " " & FaLi(iFNa, FabNr -1)
'--------------------------------------------------------------------------------------------------------------------------
	else				
		if oFarbDialog.getControl("OptionButton4").Model.state = 1 Then
			oFarbDialog.getControl("Label102").Model.TextColor = FaLi(iFaPal, FabNr -1)
				oZellBereich.charcolor = FaLi(iFaPal, FabNr -1)
				
				FontFarbe = FaLi(iFaPal, FabNr -1)
				FontFarbName = FaLi(iFNa, FabNr -1)
				
					oFormularButton.TextColor = FaLi(iFaPal, FabNr -1)
					oFarbDialog.getControl("Label104").Text = " " & FaLi(iFNa, FabNr -1)
		end if
'--------------------------------------------------------------------------------------------------------------------------			
	end if	
end sub
'
'###########################################################################################################################
'
Sub LabelLesen(oEvent) 
	oLesen = oEvent.Source.Model.Name
	LaLe = Val(right(oLesen, len(oLesen) -5))
	oFarbDialog.getControl("Label101").Text = " " & FaLi(iFNa, LaLe -1)
end sub
'
'########################################################################################################
'
Sub LabelOff(oEvent) 
	oFarbDialog.getControl("Label101").Text = "" 
end sub
'
'########################################################################################################
'
sub ArtWechseln(oEvent)
	oArWe = oEvent.Source.Model.Name
	ArtWex = Val(right(oArWe, len(oArWe) -12))
	
	if ArtWex = 3 Then
		OpBu1 = 3
		OpBu2 = 4
			OptionenWechseln
'--------------------------------------------------------------------------------------------------------------------------
	else
		OpBu1 = 4
		OpBu2 = 3
			OptionenWechseln		
'--------------------------------------------------------------------------------------------------------------------------
	end if
end sub
'
'########################################################################################################
'
sub PaletteWechseln(oEvent) 
	oPaWe = oEvent.Source.Model.Name
	PalNr = Val(right(oPaWe, len(oPaWe) -12))
	
	if PalNr = 2 Then
		OpBu1 = 2
		OpBu2 = 1	
			OptionenWechseln
'--------------------------------------------------------------------------------------------------------------------------
				iFaPal = 2
				iFNa = 3
					Fuellen
'--------------------------------------------------------------------------------------------------------------------------
	else
		OpBu1 = 1
		OpBu2 = 2	
			OptionenWechseln
				iFaPal = 0
				iFNa = 1
				Fuellen
'--------------------------------------------------------------------------------------------------------------------------
	end if
end sub
'
'########################################################################################################
'
sub OptionenWechseln
		oOptBu1 = oFarbDialog.getControl("OptionButton" & OpBu1).Model
		oOptBu1.backgroundcolor = FaLi(0, 2) '= "&H008000" : FaLi(1, 2) = "Grün"
		oOptBu1.TextColor = FaLi(0,15) '= "&Hffffff" : FaLi(1,15) = "Weiß"		
			
		oOptBu2 = oFarbDialog.getControl("OptionButton" & OpBu2).Model
		oOptBu2.backgroundcolor = -1
		oOptBu2.state = 0
		oOptBu2.TextColor = 0
end sub
'
'########################################################################################################
'
sub Fuellen 
	for lafu = 0 to 99
		aLabels(lafu).backgroundcolor = FaLi(iFaPal, lafu)
		aLabels(lafu).HelpText = " " & FaLi(iFNa, lafu)
	next lafu
end sub
'
'########################################################################################################
'
Sub FarbenDialogEnde(oEvent) 
	oFaDiEn = oEvent.Source.Model.Name
	DlgEnd = Val(right(oFaDiEn, len(oFaDiEm) -13))
	
	If DlgEnd = 1 then
		bruch = 0
	else 
		bruch = 1		
	endif
		
   oHptDialog.setVisible(true)
   oHptDialog.isVisible(true)
   oHptDialog.isActive(true)
   oHptDialog.isEnabled(true)
   		
	WennFarbeHilfe
		oFarbDialog.setVisible(false)
		oFarbDialog.isVisible(false)	
	MonatlicheFarbenBeenden
end Sub
'
'########################################################################################################
'
sub WennFarbeHilfe
	if oDlgFarbeHilfe.isVisible() = true then
		oDlgFarbeHilfe.setVisible(false)
		oDlgFarbeHilfe.isVisible(false)	
	end if
end sub
'
'########################################################################################################
'
Sub BruchStatus
	if bruch = 0 then
		HintergrundFarbe = BackFarbe
		SchriftFarbe = FontFarbe
'--------------------------------------------------------------------------------------------------------------------------
	else
			HintergrundFarbe = HinterFarbe(XZaehler)
			SchriftFarbe = TextFarbe(XZaehler)			
'--------------------------------------------------------------------------------------------------------------------------
	end if
end sub


Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
mikeleb
*******
Beiträge: 1262
Registriert: Fr, 09.12.2011 16:50

Re: Was bedeutet diese Fehlermeldung?

Beitrag von mikeleb »

Hallo,
ich habe mal versucht zu verstehen, was du mit den Makros vor hast.
Dabei ist mir folgendes augefallen:
Als erstes wird das Makro SiKo_CSV_Import aufgerufen. Damit werden aus einer csv-Datei Daten des Bereichs A1:C500 in den Bereich K3:M502 deiner odt-Datei kopiert.
Dann folgt das Makro SiKo_ID_finden. Hier wird nun in den Bereich J3:J500 (ggf. auch kleiner) eine Formel geschrieben, die die Einträge der Spalte L und M analysiert. Dann wird in die Zelle G1 eine Formel geschrieben, die aus dem Bereich J4:M500 genau einen Wert heraussucht und dann wird dieser Wert anstelle der Formel in die Zelle G1 übertragen.
Anschließend wird der Zellbereich J1:M500 gelöscht.
Wenn ich das so richtig verstanden habe, wäre es doch sinnvoller (und schneller) per Makro die csv-Datei nach der Zeile zu durchsuchen, deren Spalte B mit dem Wert von Parameter.D$4 übereinstimmt, und Spalte C mit dem WERT(LINKS(Parameter.D$6;3))+1859. Dann der Wert aus Spalte A in die Zelle G1 geschrieben werden und fertig.
Eine kurze Ergänzug der SiKo_CSV_Import würde das alles in einem Ruztsch erledigen:

Code: Alles auswählen

Sub SiKo_CSV_Import

	'Zugriff auf die aktuelle Datei
	oDoc=ThisComponent
	
	'Vergleichswerte
	wert1=oDoc.Sheets.geByName("Parameter").getCellRangeByname("D4").value
	wert2=val(left(oDoc.Sheets.geByName("Parameter").getCellRangeByname("D6").string,3))+1859
	
	'Öffnen der csv-Datei
	Dim args(1) as New com.sun.star.beans.PropertyValue
	args(0).Name= "FilterName"
	args(0).Value = "Text - txt - csv (StarCalc)"
	
	'ASCII-Codes 44 (Komma), 32 (Leerzeichen), 9 (Tabulator)
	'Mehrfachauswahl durch / trennen, z. B. 44/9
	sFeldSeparator="44"
	'ASCII-Codes 34 (doppelte Hochkomma), 39 (einfache Hochkomma)
	sTextBegrenzer="34"
	'Systemzeichensatz 0 - I: Unicode (UTF.8): 76
	sZeichensatz="76"
	'erste einzulesende Zeile
	sErste="1"
	'Spaltenformat für jede Spalte festlegen
	'Spalte/Format/Spalte/Format/...
	'Formate: 1 Standard, 2 Text, 3 Datum (MTJ), 4 Datum (TMJ), 5 Datum (JMT), 9 nicht importieren, 10 US-englisch
	'nicht aufgeführte Spalten werden als Standard importiert
	sSpaltenFormate="1/1/2/2/3/2"
	args(1).Name="FilterOptions"
	args(1).Value =sFeldSeparator & "," & sTextBegrenzer & "," & sZeichensatz & "," & sErste & "," & sSpaltenformate

	'Aktuelles Verzeichnis einlesen und Datei Sassen.csv öffnen
	surl = thiscomponent.url
	apfad = split(surl,"/")
	apfad(ubound(apfad)) = "sippungskopf.csv"
   	sURL = convertToURL(join(apfad,"/"))
   	oCSV = StarDesktop.LoadComponentFromURL(sURL, "_blank", 0, args())
   	
	'1: Auslesen der Daten in ein Array der Daten
	aDaten=oCSV.Sheets(0).getCellRangeByName("A2:C500").getDataArray
	
	'CSV-Datei schließen
	oCSV.close(false)
	
	'Daten nach Vergleichswerten durchsuchen
	
	ergebnis=0	 'wenn der gesuchte Wert SiKo_ID eine Zahl ist
	
	For i=0 to ubound(aDaten)
		If aDaten(i)(1)=wert1 AND aDaten(i)(2)=wert2 Then
			ergebnis=aDaten(i)(0)
		End If
	Next

	oDoc.Sheets(4).getCellRangeByname("G1").value=ergebnis
		
End Sub
Gruß,
mikeleb
kilix
***
Beiträge: 80
Registriert: So, 09.04.2023 11:27

Re: Was bedeutet diese Fehlermeldung?

Beitrag von kilix »

Hallo mikeleb,

vielen Dank für deine Mühe! Dein Beispiel, insbesondere das If-Statement hat mir ein weiteres Tor zum Verständnis geöffnet. Ich hatte einmal schon vor direkt mit den Daten aus der csv-Datei eine Selektion zu machen aber mir fehlte die Möglichkeit detailierter auf Daten zuzugreifen - die ich jetzt habe.

Ich denke, dass ich einmal erklären sollte warum ich diese Arbeit mache:
Ich bin 78 Jahre alt und Pensionist/Rentner und möchte mein Gedächtnis und Hirn trainieren (besser als das mit Kreuzworträtsel und anderen Spielereien möglich ist). Bis vor 2 Jahren habe ich am PC vorbildähnliche 3D-Modelle für eine Eisenbahnsimulation konstruiert, die bei meinen Abnehmern gern verwendet wurden. Nachdem mir alles was ich sehr lange mache irgendwann langweilig wird habe ich eine andere Betätigung gesucht und, nachdem ich das auch schon früher (meist privat) gemacht habe, bin ich auf's Programmieren gestoßen. Früher hatte ich beruflich mit Basic+ von DEC zu tun und privat mit DBase III+, Acad, MS-Access und auch den alten Excel-Makros. Um hier anzuknüpfen habe ich begonnen mir FreeBasic anzueignen und damit diese Applikation entwickelt, die ich jetzt mit OO lösen möchte.
Nach dem was ich bis jetzt gelernt habe denke ich, dass mir das auch möglich sein wird. Die Aktionen, die zwischen Dokumenten zu lösen sind, kann ich jetzt aus deinen Beispielen abnehmen bzw. ableiten. Das meiste andere sind Aufzeichnungen von Bildschirmbefehlen. Dabei habe ich auf das Studium der Grundlagen wie von z.B. von Andrew Pitonyak bewußt verzichtet (die Geduld dafür habe ich nicht mehr und würde mir das auch nur schwer merken). Allerdings wenn ich Beispiele suche dann suche ich auch darin wie auch bei Michael Dannenhöfer (StarBasicfaq.pdf). Mit einem Wort ich lerne durch Vergleiche von Beispielen und probieren.
Noch eine Ergänzung: diese Arbeit mache ich nur für mich, sie wird nie veröffentlicht werden!
Grüße
kilix
mikeleb
*******
Beiträge: 1262
Registriert: Fr, 09.12.2011 16:50

Re: Was bedeutet diese Fehlermeldung?

Beitrag von mikeleb »

Hallo,
dafür ist das Forum da ...
Respekt! und einfach weiter neugierig bleiben.
Gruß,
mikeleb
kilix
***
Beiträge: 80
Registriert: So, 09.04.2023 11:27

Re: Was bedeutet diese Fehlermeldung?

Beitrag von kilix »

Danke dir !
Grüße
kilix
kilix
***
Beiträge: 80
Registriert: So, 09.04.2023 11:27

Re: Was bedeutet diese Fehlermeldung?

Beitrag von kilix »

@mikeleb,

es hat wieder länger gedauert bis ich mich wieder mit OO beschäftigen konnte. Ich habe mein ursprüngliche Sub durch deine Sub (siehe oben) ersetzt. Leider ist der Ergebniswert 0 und nicht der gesuchte Indexwert. Das Problem liegt in diesem Bereich:

Code: Alles auswählen

	'Daten nach Vergleichswerten durchsuchen
	
	ergebnis=0	 	'wenn der gesuchte Wert SiKo_ID eine Zahl ist
	
	For i=0 to ubound(aDaten)
		If aDaten(i)(1)=wert1 AND aDaten(i)(2)=wert2 Then
			ergebnis=aDaten(i)(0)
		End If
	Next
	
	oDoc.Sheets(4).getCellRangeByname("G1").value=ergebnis

Durch die Schleife und das If-Statement wird in aDaten(i)(0) der richtige Wert eingelesen. Allerdings wird er nicht an die Variable ergebnis übergeben. Diese enthält den Wert 0 was nach obiger Definition wohl richtig ist da der gesuchte und gefundene Wert eine Zahl ist.
Nun brauche ich aber in der Zelle G1 den Wert der in aDaten(i)(0) steht denn das ist die ID mit der ich in der nächsten Sub die benötigten Zeilen herausfiltern kann.
Ich nehme an, dass mein Problem in der Zeile ergebnis=aDaten(i)(0) liegt. Was muss ich schreiben damit in ergebnis die gesuchte ID gespeichert wird?

In Gedanken überarbeite ich bereits die Datenübernahmen aus den beiden anderen CSV-Dateien. Diese enthalten die Daten der Vereine und der Mitglieder. In beiden Fällen sowohl die der aktiven als auch der nicht mehr aktiven und nur die benötige ich für mein System. Derzeit sortiere ich die übernommenen Zeilen nach dem Inaktivdatum und löschen dann die Zeilen die ein solches Datum enthalten. Diese Lösung habe ich auch als Makro mitgeschrieben. In Anlehnung an die oben angesprochene Lösung sollte es aber auch möglich sein überhaupt nur die aktiven Sätze zu übernehmen.
Grüße
kilix
mikeleb
*******
Beiträge: 1262
Registriert: Fr, 09.12.2011 16:50

Re: Was bedeutet diese Fehlermeldung?

Beitrag von mikeleb »

Hallo,
für die fehlersuche ist es wichtig zu wissen, ob die ID (in der Spalte A) eine Zahl oder Text ist und ob die Vergleichswerte wert1 und wert2 richtig ausgelesen werden.
Wenn du Codezeilen

Code: Alles auswählen

'Vergleichswerte
	wert1=oDoc.Sheets.geByName("Parameter").getCellRangeByname("D4").value
	wert2=val(left(oDoc.Sheets.geByName("Parameter").getCellRangeByname("D6").string,3))+1859
ergänzt durch

Code: Alles auswählen

'Vergleichswerte
	wert1=oDoc.Sheets.geByName("Parameter").getCellRangeByname("D4").value
	wert2=val(left(oDoc.Sheets.geByName("Parameter").getCellRangeByname("D6").string,3))+1859
	msgbox "wert1: " & wert1 & chr(10) & "wert2: " & wert2
werden dir die Werte angezeigt.
Gruß,
mikeleb
Antworten