[gelöst] Was bedeutet diese Fehlermeldung?
Moderator: Moderatoren
[gelöst] Was bedeutet diese Fehlermeldung?
Hallo,
ich habe einen Makro der eine CSV-Datei einliest, in eine ODS übernimmt und bearbeitet. Während des Durchlaufs erscheint die folgende Fehlermeldung: 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.
ich habe einen Makro der eine CSV-Datei einliest, in eine ODS übernimmt und bearbeitet. Während des Durchlaufs erscheint die folgende Fehlermeldung: 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
kilix
Re: Was bedeutet diese Fehlermeldung?
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.
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.
Dazu wäre es schon hilfreich, das Makro zu kennen. Bitte einmal posten.Leider gelingt es mir nicht herauszufinden welcher Befehl diese Meldung auslöst.
Gruß,
mikeleb
mikeleb
Re: Was bedeutet diese Fehlermeldung?
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.
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.
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
Ergänzung: interessant ist auch, dass diese Meldung intermittierend auftritt, was ja bei Software eher nicht vorkommet.
Grüße
kilix
kilix
Re: Was bedeutet diese Fehlermeldung?
Hallo
Es wäre jetzt wohl der richtige Zeitpunkt diese ~500Zeilen Aufgezeichneten-Kraut-Und-Rüben-Code wegzuwerfen !
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)
LO24.8.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Re: Was bedeutet diese Fehlermeldung?
Hallo,
mal am Beispiel der ersten angedeutet, was karolus meint:
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
mikeleb
Re: Was bedeutet diese Fehlermeldung?
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
kilix
Re: Was bedeutet diese Fehlermeldung?
Dann stell dir mal vor du bekommst diese 500Zeilen-wurst (ohne Kontext) vorgesetzt und sollst das debuggen!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.
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Re: Was bedeutet diese Fehlermeldung?
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.
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
kilix
Re: Was bedeutet diese Fehlermeldung?
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
Im folgendem Code tritt dieser Fehler auf: Jetzt sollst DU kilix den Fehler verstehen, suchen, finden und beseitigen. Viel Spaß auch dabei
.
Gruß
balu
"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
nicht richtig verstanden. Um aber dieses defizit auszugleichen setzen wir das mal Praktisch in die Tat um.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!
Im folgendem Code tritt dieser Fehler auf: Jetzt sollst DU kilix den Fehler verstehen, suchen, finden und beseitigen. Viel Spaß auch dabei

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
wehr rächtschraipfähler findet khan si behalden

Re: Was bedeutet diese Fehlermeldung?
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:
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
mikeleb
Re: Was bedeutet diese Fehlermeldung?
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!
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
kilix
Re: Was bedeutet diese Fehlermeldung?
Hallo,
dafür ist das Forum da ...
Respekt! und einfach weiter neugierig bleiben.
dafür ist das Forum da ...
Respekt! und einfach weiter neugierig bleiben.
Gruß,
mikeleb
mikeleb
Re: Was bedeutet diese Fehlermeldung?
@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:
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.
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
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
kilix
Re: Was bedeutet diese Fehlermeldung?
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
ergänzt durch
werden dir die Werte angezeigt.
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
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
Gruß,
mikeleb
mikeleb