BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das OpenOffice Forum zu erhalten!

DANKE >><< DANKE

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des OpenOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als OO-SUPPORTER gekennzeichnet. 🤗

Variable nicht definiert

Alles zur Programmierung im OpenOffice.org
Ulko38
Beiträge: 13
Registriert: Do 26. Nov 2015, 09:03

Re: Variable nicht definiert

Beitrag von Ulko38 » Mo 16. Jan 2017, 19:21

Hi Craic

Die letzte Frage zu erst:
War meine Datei, bzw. mein Code nicht das Richtige?
Doch, doch. Der wird mit Sicherheit gebraucht.

Code: Alles auswählen

 hast Du eine schönen Urlaub gehabt?
Ja, Klar. Urlaub in einer it. Großfamilie heißt mum mal, vor allem zu Weihnachten, Essen, gut Essen, viel Essen.
Bin aber trotzdem oder auch deshalb viel spazieren gegangen. 4 Wochen Sonne. Und für Italen nicht üblich, ständig Nachtfröste.
Bei der flach stehenden Sonne eine Sicht !! Unglaublich.

In den 4 Wochen hatte ich auch Zeit zum überlegen. Große und kleine Zeilücken mit einer Konstanten zu verändern, hat mir je länger ich darüber nachgedacht habe, nicht gefallen.
Da die GPX-Punkte nicht weit auseinander liegen, viel Pythagoras ein. Bei den kurzen Strecken kann man davon ausgehen, das Längen- und Breitengrade rechteinklich aufeinander stehen.
Mit dem Abstand (C) kann man dann mit nur einen Konstanten (v=Geschwindigkeit) unterschiedliche Zeiten ermitteln.
Das ging im ersten Durchlauf schon recht gut. bis zum Datenüberlauf. Weil kein "greifender" Ende-Befehl vorhanden war.
Auf alle Fälle bekommst du entsprechende Dateien mit meinen Erläuterungen.

Grüße ulko

Ulko38
Beiträge: 13
Registriert: Do 26. Nov 2015, 09:03

Re: Variable nicht definiert

Beitrag von Ulko38 » Di 31. Jan 2017, 10:27

Hi,
Das von mir angesprochene Problem konnte gelöst werden.
Ich stelle das ZeitenÄndern - Makro hier noch mal ein.
Es gibt sicherlich noch feinheiten, die verbessert bzw von
händischer Bearbeitung in ein Makro eingebettet werden könnten.

Code: Alles auswählen

REM  *****  BASIC  *****

Option Explicit

sub ZeitAendern

rem ----------------------------------------------------------------------
rem Variable deklarieren

Dim oCalkDokument    As object
dim oDispatcher 	 as object

Dim oDoc As object, oTabBlatt As object , oRange As object
Dim	oCellCursor As object, oZelle As object, oView	as	object
Dim oSheet	As	Object
REM Anfang der zu bearbeitenden Zeilen
Dim nZei		As	Integer

REM	Ende der Zeilenbearbeitung
Dim nLetzteZ	As	Long
Dim nTo			As	Long
REM	Dim nLetzteSp	As	Long
Dim c			As	Long
Dim	i			As	Long
Dim	x			as	Integer
REM Dim	nAr			As	Long
Dim	nSek		As	Integer
Dim	nSekDif		As	Integer
Dim	nMinu		As	Integer
Dim nStun		As	Integer
Dim nZwStun		As	Integer
Dim nZwMinu		As	Integer	
Dim nBildTime	As  Variant
Dim	nBildNull	As	Variant
Dim y			As	Integer

 oCalkDokument   = ThisComponent.CurrentController.Frame
odispatcher		= createUnoService("com.sun.star.frame.DispatchHelper")
i = 0
oCalkDokument = ThisComponent	
oTabBlatt = oCalkDokument.Sheets().getByindex(i)
' Name anzeigen
'MsgBox oTabBlatt.Name 

oCellCursor = oTabBlatt.createCursor
Rem		oCellCursor.GotoEndOfUsedArea(False)
	
'	Den aktiven Cursor bekommt man mit
   
oView = oCalkDokument.CurrentController
     
REM		Untilbegrenzer
nLetzteZ = 1859
nTo  = 1
nZei = 1
nBildTime = 0
nBildNull = 0

 Rem	 ZellenVariablen
nStun = 0
nMinu = 0
nSek =  0
nZwStun = 0
NZwMinu = 0
nSekDif = 0

x = 1
y = 1

Rem		Cursor muß man dann die gewünschte Zelle zuweisen
	oZelle = oTabBlatt.getCellByPosition(3,x)
	nBildNull = oZelle.Value
	
	oZelle = oTabBlatt.getCellByPosition(5,x)
	nStun = oZelle.Value

	oZelle = oTabBlatt.getCellByPosition(6,x)
	nMinu = oZelle.Value

	oZelle = oTabBlatt.getCellByPosition(7,x)
	nSek = oZelle.Value


do until x = nLetzteZ
	for y = 1 to nTo
		oZelle = oTabBlatt.getCellByPosition(5,x +1)
		nZwStun = oZelle.Value
	oZelle = oTabBlatt.getCellByPosition(3,x +1)		
		nBildTime = oZelle.Value
Rem		msgbox ( x &"  Zeile  "& nBildTime &"  hh  "& nZwStun &" "& nBildNull)
	
		oZelle = oTabBlatt.getCellByPosition(8,x)
		nsekDif = oZelle.Value
		oZelle = oTabBlatt.getCellByPosition(7,x)
			
		if nSek + nSekDif > 59 Then
			oZelle = oTabBlatt.getCellByPosition(7,x)
			nSek = nSek - 60
			nMinu = nMinu +1

			if nMinu   >= 60 Then
			    x = x +1
				oZelle = oTabBlatt.getCellByPosition(5,x)
				nStun = nStun +1
				oZelle.Value = nStun
				x = x -1
				nMinu = nMinu -60							
			end if		
		end if
		x = x +1
		If nBildTime > nBildNull Then		
Rem					msgbox ( x &"  Zeile  "& nStun &"  hh  "& nZwStun )

			oZelle = oTabBlatt.getCellByPosition(7,x)
			nSek = oZelle.Value
			oZelle =oTabBlatt.getCellByPosition(6,x)					
			nMinu =oZelle.Value
			oZelle =oTabBlatt.getCellByPosition(5,x)
			nStun = oZelle.Value
Rem			msgbox ( x &"  Zeile  "& nStun &"  hh  "& nZwStun &"    "& nMinu )
		Endif
		nSek =nsek +nSekDif
		oZelle = oTabBlatt.getCellByPosition(7,x)
    	oZelle.Value = nSek

		oZelle =oTabBlatt.getCellByPosition(6,x)					
		oZelle.Value = nMinu

		oZelle =oTabBlatt.getCellByPosition(5,x)
		oZelle.Value = nStun
Rem	msgbox ( x  &" ZEILE  "& nStun &"  hh  "& nMinu &" mm "& nSek &"  ss  "& nSekDif ) 
		 	    
		nZei = nZei +1
		y = y +1
		if nZei > nLetzteZ then exit sub
 		next y
 		loop
 
 End Sub
Grüße an alle Helfer ulko

Antworten