Schleifen

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: Schleifen

Re: Schleifen

von Stephan » Di, 12.06.2012 17:49

Da Du ja trotzdem ich nicht nur auf Karo verwiesen hatte sondern auch angedeutet hatte waarum DEine Functions suboptimal erscheinen, nicht darauf eingehst kann ich hier auch nur 08/15 antworten.

Der folgende Code wirds irgendwie tun, 'schön' bzw. sinnvoll geht aber anders:

Code: Alles auswählen

Sub Start()
  'Vorgabewerte:
  Startzeile = 0
  Endzeile = 10
  Startspalte = 0
  Endspalte = 10
  
  For i = Startzeile To Endzeile
    For j = Startspalte To Endspalte
      x = GetValue(i, j)
      GiveValue(i, j, x)
      Wait 1000
    Next j
  Next i
Ens Sub


Function GetValue(Zeile as Integer, Spalte as Integer) as Double
Dim oCalcDokument as Object
ocalcDokument = ThisComponent
Dim oTabellenblatt as Object                                           
Dim oZelle as Object
oTabellenblatt = ocalcDokument.Sheets.getbyname("Messwerte")           
oZelle = ozelle.Value.getCellByPosition(Spalte, Zeile)
GetValue = oZelle.Value
End Function

Function GiveValue(Zeile as Integer, Spalte as Integer, Wert as Double) as Double
Dim oCalcDokument as Object
ocalcDokument = ThisComponent
Dim oTabellenblatt as Object
Dim oZelle as Object
oTabellenblatt = ocalcDokument. Sheets.getbyname("AniMesswerte")
oZelle = oTabellenblatt.getCellByPosition(Spalte, Zeile)
oZelle.Value = Wert
End Function



Gruß
Stephan

Re: Schleifen

von prime » Di, 12.06.2012 16:05

Richtig, die eingetragenen Werte werden in ein Diagramm übertragen, und dieser Vorgang soll als eine Art Animation ablaufen.

Re: Schleifen

von Karolus » Di, 12.06.2012 15:58

Hallo
Schön - Diese Informationen hast du bereits im Ausgangspost gegeben ( in etwas anderen Worten )
Das Eintragen der Werte soll zeitlich verzögert ablaufen, zB soll nach jedem Wert eine Sekunde gewartet werden, bis der nächste eingetragen wird.
Dann ist eine effiziente Umsetzung eh nicht gefragt.

Karo

Re: Schleifen

von prime » Di, 12.06.2012 15:36

Also, ich habe ein vorgegebenes Dokument, mit zwei Tabellenblättern.
Das Makro ist fest mit dem Dokument verknüpft.

Das eine Tabellenblatt enthält Werte, welche zum Teil einfach direkt in das andere Tabellenblatt übernommen werden sollen, zum anderen Teil sollen manche Werte genommen werden, dann eine Berechnung durchgeführt werden und dann erst in das andere Tabellenblatt eingetragen werden.
Es gibt also Start -und Endwerte für die Zeile/Spalte.

Das Eintragen der Werte soll zeitlich verzögert ablaufen, zB soll nach jedem Wert eine Sekunde gewartet werden, bis der nächste eingetragen wird.

Re: Schleifen

von Stephan » Di, 12.06.2012 13:41

Jemand eine Idee?
folge bitte dem Rat von "Karolus", denn z.B. Deine Functions sind suboptimal (entweder das Tabellenobject wäre auszulagern oder es müßte start- und Endwerte für Zeilen und Spalten geben, jenachdem ob Du die Schleife in der Function oder dem aufrufenden makro haben willst) und sehr wahrscheinlich ist das Interieren durch Zellen garnicht gewollt (da das in Calc seeehr langsam ist und man es deshalb anders löst)


Gruß
Stephan

Re: Schleifen

von Karolus » Di, 12.06.2012 13:35

Hallo
Fang noch mal von vorne an und beschreibe was du "eigentlich" erreichen möchtest.

Karo

Schleifen

von prime » Di, 12.06.2012 13:17

Hallo zusammen,
habe folgende Aufgabe:
Es sollen durch ein Makro bestimmt Werte aus einem Tabellenblatt entnommen werden und diese dann in ein anderes Tabellenblatt kopiert werden.
Mit den Werten aus einer Spalte soll zusätzlich noch eine Berechnung durchgeführt werden (erstmal nebensächlich).

Bisher habe ich folgende Funktionen geschrieben:

Code: Alles auswählen

Function GetValue(Tabellenblatt as Object, Zeile as Integer, Spalte as Integer) as Double
Dim oCalcDokument as Object
ocalcDokument = ThisComponent 
Dim oTabellenblatt as Object                                           
Dim oZelle as Object
oTabellenblatt = ocalcDokument.Sheets.getbyname("Messwerte")            
oZelle = ozelle.Value.getCellByPosition( Zeile, Spalte )
GetValue = oZelle.Value
End Function

Function GiveValue(Zeile as Integer, Spalte as Integer, Wert as Double ) as Double
Dim oCalcDokument as Object
ocalcDokument = ThisComponent 
Dim oTabellenblatt as Object
Dim oZelle as Object
oTabellenblatt = ocalcDokument. Sheets.getbyname("AniMesswerte")
oZelle = oTabellenblatt.getCellByPosition( Zeile, Spalte )
oZelle.Value = Wert
End Function
Diese Funktionen müssten nun in ein bzw. zwei Schleifen verpackt werden, sodass die einzelenen Zellen (durch Zeile und Spalte definiert) abgeschritten werden, und dann die Werte in das andere Tabellenblatt kopiert werden (in diesem Fall von "Messwerte" nach "Animesswerte".
Zusätzlich soll noch eine zeitliche Verzögerung eingebaut werden, dies funktioniert ja mit der wait-Anweisung.
Jemand eine Idee?

Nach oben