im definierten bereich zweite spalte einfüge

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

Moderator: Moderatoren

kannenklaus
*****
Beiträge: 319
Registriert: Mi, 14.12.2005 08:08
Wohnort: freising - oder dort, wo das bier herkommt

im definierten bereich zweite spalte einfüge

Beitrag von kannenklaus »

hallo

mit unten stehenden code will ich z.b. von spalte c bis h jeweils eine spalte einfügen. beim debuggen stelle ich fest, dass das makro beim ersten i-wert aus der for/next-schleife aussteigt. woran kann das liegen?

danke klaus

Code: Alles auswählen

Sub ZweiteSpalteEinf
Dim aktBlatt as Object
Dim oSpalte as Object
Dim i as double,dblSpAnf as double, dblSpEnde as Double
Dim strSpAnf as string, strSpEnde
aktBlatt=thisComponent.CurrentController.getActiveSheet
oSpalte=aktBlatt.getColumns

'--Anfangs- und Endspalte festlegen
strSpAnf=Inputbox("Bitte Anfangsspalte eingeben:","Schritt 1: Zweite Spalte einfügen","C")
strSpEnde=Inputbox("Bitte Endspalte eingeben:","Schritt 2: Zweite Spalte einfügen","H")

'--Prüfung, ob die Inputboxen befüllt und mit okay abgeschlossen worden sind als Voraussetzung
'--für die Umwandlung in Index
if strSpAnf="" then
	Msgbox("Eingabe und Abschluss mit ""ok"" ist erforderlich!",0,"Info zum Makro")
	exit sub
elseif strSpEnde=""then
	Msgbox("Eingabe und Abschluss mit ""ok"" ist erforderlich!",0,"Info zum Makro")
	exit sub
end if
'--Spaltenbuchstabe in Index umwandeln
	dblSpAnf=ASC(UCASE(strSpAnf))-65
	dblSpEnde=ASC(UCASE(strSpEnde))-65
'with aktBlatt
	for i=dblSpAnf to dlbSpEnde
	oSpalte.insertByIndex(i,1)
	i=i+1
	next
end sub
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: im definierten bereich zweite spalte einfüge

Beitrag von Stephan »

woran kann das liegen?
daran das Du für die obere Grenze der Schleife dlbSpEnde verwendest.

dlbSpEnde ist nicht dblSpEnde Und dlbSpEnde hat keinen Wert


Tip:
Die Vermutung wo der Fehler liegen muss liegt doch nahe(*), trotzdem unterlaufen mir solche Verschreiber auch. Mein Rat ist schlicht der das wenn man weiß wo der Fehler sein sollte, man ihn aber nicht sieht, die Ausdrücke stur mit Copy/Paste zu kopieren und nicht per Hand hinzuschreiben.

(*)
Falls nicht hätte Dich das ganz einfache

Code: Alles auswählen

Option Explicit
darauf aufmerksam gemacht.

Hinweis:
dass das makro beim ersten i-wert aus der for/next-schleife aussteigt
das ist richtig, aber auch das wäre ein sehr konkreter Hinweis auf den Fehler, weil:

das Makro steigt hier nicht aus weil die Variable für die obere Grenze falsch ist, und die obere Grenze somit 0, das Makro steigt aus weil die obere Grenze kleiner als die untere ist, denn For-Next wird unter normalen Umständen immer mindestens einmal durchlaufen

hingegen würde die Schleife trotz falscher Variable funktionieren mit:

Code: Alles auswählen

for i=dblSpAnf to dlbSpEnde Step -1
(nicht in Deinem Sinne, aber formal funktionieren)

(Achtung lass hierbei zum Testen i=i+1 weg sonst hängst Du in der Schleife fest)

Gruß
Stephan
kannenklaus
*****
Beiträge: 319
Registriert: Mi, 14.12.2005 08:08
Wohnort: freising - oder dort, wo das bier herkommt

[gelöst]im definierten bereich zweite spalte einfüge

Beitrag von kannenklaus »

danke stephan; für deine mühe und tipps
Antworten