Was übersehe ich?

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Was übersehe ich?

Re: Was übersehe ich?

von F3K Total » Fr, 17.02.2012 22:54

wellmo hat geschrieben:Cool, das geht, darf ich dir auch noch meine anderen 200 Codes für ein Facelifting schicken :lol:
Danke dir
Klar!
Wenn Du dir das leisten kannst.

;-) R

Re: Was übersehe ich?

von Karolus » Fr, 17.02.2012 22:32

Hallo

Code: Alles auswählen

Sub Zahlungskonditionen2
sheet = ThisComponent.CurrentController.ActiveSheet
sheet2 = thiscomponent.sheets(2)
bold = com.sun.star.awt.FontWeight.BOLD
cond = false
with thiscomponent.sheets(1)
for i = 72 to 120   
	if .getcellbyposition(1 ,i).string = "" then
		.getcellbyposition(1 ,i+1).string = "Zahlungskonditionen"
		.getcellbyposition(1,i+1).CharWeight= bold
		cond = True
		i = i+1
		exit for
	end if
next i
if not cond then exit sub
for row = 10 to 19
	if sheet2.getcellbyposition(7 , row).string <> "" then
		.getcellbyposition(1 ,i+1).formula = "=Listenfelder.D" & row +1
		i=i+1
	end if
next row

end with

End Sub
Karo

Re: Was übersehe ich?

von wellmo » Fr, 17.02.2012 22:02

Cool, das geht, darf ich dir auch noch meine anderen 200 Codes für ein Facelifting schicken :lol:


Danke dir

Re: Was übersehe ich?

von F3K Total » Fr, 17.02.2012 21:53

Nun, vielleicht könntest du z.B. diesen Teil:

Code: Alles auswählen

if thiscomponent.sheets(2).getcellbyposition(7 ,10).string <> "" then
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D11"
   i=i+1
end if     
if thiscomponent.sheets(2).getcellbyposition(7 ,11).string <> "" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D12"
   i=i+1
end if   
if thiscomponent.sheets(2).getcellbyposition(7 ,12).string <> "" then     
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D13"
   i=i+1
end if   
if thiscomponent.sheets(2).getcellbyposition(7 ,13).string <> "" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D14"
   i=i+1
end if   
if thiscomponent.sheets(2).getcellbyposition(7 ,14).string <> "" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D15"
   i=i+1
end if   
if thiscomponent.sheets(2).getcellbyposition(7 ,15).string <> "" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D16"
   i=i+1
end if   
if thiscomponent.sheets(2).getcellbyposition(7 ,16).string <> "" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D17"
   i=i+1
end if   
if thiscomponent.sheets(2).getcellbyposition(7 ,17).string <> "" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D18"
   i=i+1
end if     
if thiscomponent.sheets(2).getcellbyposition(7 ,18).string <> "" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D19"
   i=i+1
end if   
if thiscomponent.sheets(2).getcellbyposition(7 ,19).string <> "" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D20"
end if
"etwas" kürzen:

Code: Alles auswählen

for k = 10 to 19
  if thiscomponent.sheets(2).getcellbyposition(7 ,k).string <> "" then
    .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D"+(k+1)
    i=i+1
  end if     
next k
Gruß R

Re: Was übersehe ich?

von wellmo » Fr, 17.02.2012 21:38

Hi Karo

Ich bin für jeden Tipp und Verbesserungen dankbar.

Auch wenn es für dich "haarsträubend" ausschaut, für mich ist das so im Moment noch übersichtlicher da ich es Schritt für Schritt nachvollziehen kann was passiert.
und das "exit Sub darf glaub nicht sein, da der Code fertig noch weiter geht:

Ich habs nun auch hinbekommen das es so funktioniert wie ich es mir wünsche.

und das Ergebnis sieht so aus:

Code: Alles auswählen

Sub Zahlungskonditionen
with thiscomponent.sheets(1)
sheet = ThisComponent.CurrentController.ActiveSheet
for i = 72 to 120  
if .getcellbyposition(1 ,i).string = "Zahlungskonditionen" then exit for
if .getcellbyposition(1 ,i).string = "" then 
   i=i+1
end if   
if .getcellbyposition(1 ,i).string = "" then
   .getcellbyposition(1 ,i).string = "Zahlungskonditionen"
exit for 
end if
next
textcur=sheet.getcellbyposition(1,i).gettext().createtextcursor()
textcur.gotostart(true)
textcur.CharWeight=com.sun.star.awt.FontWeight.BOLD
if .getcellbyposition(1 ,i).string = "Zahlungskonditionen" then
if thiscomponent.sheets(2).getcellbyposition(7 ,10).string <> "" then
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D11"
   i=i+1
end if     
if thiscomponent.sheets(2).getcellbyposition(7 ,11).string <> "" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D12"
   i=i+1
end if   
if thiscomponent.sheets(2).getcellbyposition(7 ,12).string <> "" then     
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D13"
   i=i+1
end if    
if thiscomponent.sheets(2).getcellbyposition(7 ,13).string <> "" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D14"
   i=i+1
end if    
if thiscomponent.sheets(2).getcellbyposition(7 ,14).string <> "" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D15"
   i=i+1
end if    
if thiscomponent.sheets(2).getcellbyposition(7 ,15).string <> "" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D16"
   i=i+1
end if    
if thiscomponent.sheets(2).getcellbyposition(7 ,16).string <> "" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D17"
   i=i+1
end if    
if thiscomponent.sheets(2).getcellbyposition(7 ,17).string <> "" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D18"
   i=i+1
end if      
if thiscomponent.sheets(2).getcellbyposition(7 ,18).string <> "" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D19"
   i=i+1
end if    
if thiscomponent.sheets(2).getcellbyposition(7 ,19).string <> "" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D20"
end if
end if 
end with
End Sub
Falls du aber für diesen Code verbesserungen hast, werde ich gerne davon lernen.

Gruss

Re: Was übersehe ich?

von Karolus » Fr, 17.02.2012 21:26

Hallo
wellmo hat geschrieben:Folgender Code funktioniert und da ist auch 2 mal "if" und nur einmal "end if" drin.

Code: Alles auswählen

Sub Zahlungskonditionen
with thiscomponent.sheets(1)
sheet = ThisComponent.CurrentController.ActiveSheet
for i = 72 to 120 
if .getcellbyposition(1 ,i).string = "Zahlungskonditionen" then exit for
if .getcellbyposition(1 ,i).string = "" then
   i=i+1
end if   
if .getcellbyposition(1 ,i).string = "" then
   .getcellbyposition(1 ,i).string = "Zahlungskonditionen"
exit for
end if
next
textcur=sheet.getcellbyposition(1,i).gettext().createtextcursor()
textcur.gotostart(true)
textcur.CharWeight=com.sun.star.awt.FontWeight.BOLD
end with
End Sub
Das ist ja haarsträubend :lol:

Code: Alles auswählen

Sub Zahlungskonditionen
bold = com.sun.star.awt.FontWeight.BOLD
with thiscomponent.sheets(1)

for i = 72 to 120   
    if .getcellbyposition(1 ,i).string = "" then
		.getcellbyposition(1 ,i + 1).string = "Zahlungskonditionen"		
		.getcellbyposition(1,i+1).CharWeight= bold
    	 exit sub
    end if
next
    
end with

End Sub
Karo

Re: Was übersehe ich?

von wellmo » Fr, 17.02.2012 21:06

Ok, nun klappt das, danke, hab mich verwirren lassen von

Code: Alles auswählen

if .getcellbyposition(1 ,i).string = "Zahlungskonditionen" then exit for
if .getcellbyposition(1 ,i).string = "" then
   i=i+1
end if 
Nun kann ich mal nach dem richtigen Code für folgendes suchen da nicht immer eine Fehlermeldung kommt.

Code: Alles auswählen

if .sheets(2).getcellbyposition(7 ,10).value > "0" then

Danke dir R

Re: Was übersehe ich?

von F3K Total » Fr, 17.02.2012 20:56

und dieses:
wellmo hat geschrieben:if .getcellbyposition(1 ,i).string = "Zahlungskonditionen" then
?

es hilft mit Einrückungen zu arbeiten:

Code: Alles auswählen

if i>1 then
    msgbox ">1"
    if i=2 then msgbox "=2"
else
   msgbox "<=1"
endif
Gruß R

Re: Was übersehe ich?

von wellmo » Fr, 17.02.2012 20:44

Code erweitert und hinter jedes "if" auf ein "end if" gesetzt.
Aber es kommt die gleiche Fehlermeldung :(

Code: Alles auswählen

Sub Zahlungskonditionen
with thiscomponent.sheets(1)
sheet = ThisComponent.CurrentController.ActiveSheet
for i = 72 to 120  
if .getcellbyposition(1 ,i).string = "Zahlungskonditionen" then exit for
if .getcellbyposition(1 ,i).string = "" then 
   i=i+1
end if   
if .getcellbyposition(1 ,i).string = "" then
   .getcellbyposition(1 ,i).string = "Zahlungskonditionen"
exit for 
end if
next
textcur=sheet.getcellbyposition(1,i).gettext().createtextcursor()
textcur.gotostart(true)
textcur.CharWeight=com.sun.star.awt.FontWeight.BOLD
if .getcellbyposition(1 ,i).string = "Zahlungskonditionen" then
if .sheets(2).getcellbyposition(7 ,10).value > "0" then
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D11"
   i=i+1
end if      
if .sheets(2).getcellbyposition(7 ,11).value > "0" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D12"
   i=i+1
end if   
if .sheets(2).getcellbyposition(7 ,12).value > "0" then     
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D13"
   i=i+1
end if    
if .sheets(2).getcellbyposition(7 ,13).value > "0" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D14"
   i=i+1
end if    
if .sheets(2).getcellbyposition(7 ,14).value > "0" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D15"
   i=i+1
end if    
if .sheets(2).getcellbyposition(7 ,15).value > "0" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D16"
   i=i+1
end if    
if .sheets(2).getcellbyposition(7 ,16).value > "0" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D17"
   i=i+1
end if    
if .sheets(2).getcellbyposition(7 ,17).value > "0" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D18"
   i=i+1
end if      
if .sheets(2).getcellbyposition(7 ,18).value > "0" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D19"
   i=i+1
end if    
if .sheets(2).getcellbyposition(7 ,19).value > "0" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D20"
end if 
end with
End Sub

Re: Was übersehe ich?

von wellmo » Fr, 17.02.2012 20:39

Aha, wieder was gelernt, danke dir vielmals.

Re: Was übersehe ich?

von F3K Total » Fr, 17.02.2012 20:35

Jo,
auf das endif kannst Du verzichten, wenn nur ein Befehl nach dem then kommt, sonst nicht.
Also etwa so:

Code: Alles auswählen

i=1
if i = 1 then msgbox "klappt"
Gruß R

Re: Was übersehe ich?

von wellmo » Fr, 17.02.2012 20:21

Folgender Code funktioniert und da ist auch 2 mal "if" und nur einmal "end if" drin.

Code: Alles auswählen

Sub Zahlungskonditionen
with thiscomponent.sheets(1)
sheet = ThisComponent.CurrentController.ActiveSheet
for i = 72 to 120 
if .getcellbyposition(1 ,i).string = "Zahlungskonditionen" then exit for
if .getcellbyposition(1 ,i).string = "" then
   i=i+1
end if   
if .getcellbyposition(1 ,i).string = "" then
   .getcellbyposition(1 ,i).string = "Zahlungskonditionen"
exit for
end if
next
textcur=sheet.getcellbyposition(1,i).gettext().createtextcursor()
textcur.gotostart(true)
textcur.CharWeight=com.sun.star.awt.FontWeight.BOLD
end with
End Sub

Re: Was übersehe ich?

von F3K Total » Fr, 17.02.2012 19:59

Hi,
gehört nicht zu jedem if ein end if?

Gruß R

Was übersehe ich?

von wellmo » Fr, 17.02.2012 19:31

Bei folgendem Code bekomme ich folgende Meldung:

BASIC-Syntaxfehler.
Unerwartetes Symbol: End Sub.

Code: Alles auswählen

Sub Zahlungskonditionen
with thiscomponent.sheets(1)
sheet = ThisComponent.CurrentController.ActiveSheet
for i = 72 to 120  
if .getcellbyposition(1 ,i).string = "Zahlungskonditionen" then exit for
if .getcellbyposition(1 ,i).string = "" then 
   i=i+1
end if   
if .getcellbyposition(1 ,i).string = "" then
   .getcellbyposition(1 ,i).string = "Zahlungskonditionen"
exit for 
end if
next
textcur=sheet.getcellbyposition(1,i).gettext().createtextcursor()
textcur.gotostart(true)
textcur.CharWeight=com.sun.star.awt.FontWeight.BOLD
if .getcellbyposition(1 ,i).string = "Zahlungskonditionen" then
if .sheets(2).getcellbyposition(7 ,10).value > "0" then
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D11"
   i=i+1   
if .sheets(2).getcellbyposition(7 ,11).value > "0" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D12" 
   i=i+1 
if .sheets(2).getcellbyposition(7 ,12).value > "0" then     
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D13"
   i=i+1  
if .sheets(2).getcellbyposition(7 ,13).value > "0" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D14"
   i=i+1  
if .sheets(2).getcellbyposition(7 ,14).value > "0" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D15"
   i=i+1  
if .sheets(2).getcellbyposition(7 ,15).value > "0" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D16"
   i=i+1  
if .sheets(2).getcellbyposition(7 ,16).value > "0" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D17"
   i=i+1  
if .sheets(2).getcellbyposition(7 ,17).value > "0" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D18"
   i=i+1   
if .sheets(2).getcellbyposition(7 ,18).value > "0" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D19"
   i=i+1  
if .sheets(2).getcellbyposition(7 ,19).value > "0" then   
   .getcellbyposition(1 ,i+1).formula = "=Listenfelder.D20"
end if  
end with
End Sub
Ist folgender Code überhaupt korrekt?

Code: Alles auswählen

if .sheets(2).getcellbyposition(7 ,10).value > "0" then
Danke schonmal für die Hilfe.

Gruss

Nach oben