[Makro] "Speicherknopf"

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

Moderator: Moderatoren

eXTasY
**
Beiträge: 38
Registriert: Mo, 19.11.2012 19:08

[Makro] "Speicherknopf"

Beitrag von eXTasY »

Hallo Leute,

ich hoffe,dass mir hier jemand helfen kann.

Leider kenne ich mich mit Makros gar nicht aus, aber ich kenne sonst keine andere Möglichkeit mein Anliegen umzusetzen.

Ich bin aktuell am Erstellen einer Matrix in OpenOffice CALC mit einem Eingabeblatt.
Nach der Eingabe würde ich gerne einen Button haben auf den man klickt und anschließend werden die Daten in eine Matrix übernommen (alte Werte überspeichert) und alle Werte in diesem Eingabeblatt gelöscht.

Wäre dies machbar?
Und wenn ja wie?

Danke schonmal.

MFG
eX


Thema verschoben nach OOo Basic und Java, wo alle Themen zur Basic-Programmierung hingehören.—lorbass, Mod
 
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: [Makro] "Speicherknopf"

Beitrag von F3K Total »

Moin,
ja, das geht, aber ohne genaue Informationen was von wo nach wo soll, kann man dir nicht helfen.
Am besten lädst du ein Beispieldokument hoch, das geht, wenn Du angemeldet bist, am Fusse dieser Seite.

Gruß R
eXTasY
**
Beiträge: 38
Registriert: Mo, 19.11.2012 19:08

Re: [Makro] "Speicherknopf"

Beitrag von eXTasY »

HI,

Ich hab mal die Datei mit angehängt.

Unter Bewertungsbogen wird eine Eingabe (Bewertung) durchgeführt.
Nach der Bewertung sollte man dann auf einen "Speicherknopf" drücken, damit die Daten (gelbe Felder) in das Register "-Speicher-" übertragen bzw. überschrieben werden.

Vielen Dank schonmal für deine Hilfe =)

MFG
eX
Dateianhänge
Q-Matrix Beispieldatei.xls
(239 KiB) 41-mal heruntergeladen
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: [Makro] "Speicherknopf"

Beitrag von F3K Total »

Hi,
das ist schon komplizierter, aber ist möglich, allein, du brauchst jemanden der es programmiert.
Ich sehe beim dezeitigen Aufbau der Tabellen wenig Sinn einen Speicher anzulegen, dessen einziger "Primärschlüssel" der Name eines Mitarbeiters ist, denn wie sollen die Bewertungen verschiedener Jahre auseinanderhalten werden?
Einfacher ist es, das Bewertungsblatt zu kopieren, und so für jeden Mitarbeiter ein neues anzulegen. In einer CALC Datei können bis zu 256 Blätter liegen.

Gruß R
eXTasY
**
Beiträge: 38
Registriert: Mo, 19.11.2012 19:08

Re: [Makro] "Speicherknopf"

Beitrag von eXTasY »

Hi,

ich brauche diesen Speicher für weitere spätere Ausgabe-Matrixen.
Einer sog. Qualifizierungsmatrix, sowie eines Bedarfsbogens bei der dann die Mitarbeiter sortiert nach Einsatzbereich angezeigt werden. ...
Mehrere Jahre sollen hier gar nicht reinkommen, da immer der Stand am Bewertungstag lediglich gespeichert wird.
Ich habe mir noch überlegt, dass ich max. im Bewertungsbogen eine Spalte der bereits gespeicherten Daten machen kann und falls die dazugehörige Zelle leer ist de Zelle im Speicher nicht geändert wird sobald man den Button drückt.

Kann ich so etwas auch erlernen? bzw. wo finde ich hierzu etwas?

MfG
eX
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: [Makro] "Speicherknopf"

Beitrag von Stephan »

Kann ich so etwas auch erlernen? bzw. wo finde ich hierzu etwas?
Im ersten Thread des Makro-Forums:
viewtopic.php?f=18&t=1553

besonders erhellend dürften zunächst sein:
http://www.uni-due.de/~abi070/count.php ... eutsch.pdf
http://www.dannenhoefer.de/faqstarbasic/index.html


Gruß
Stephan
eXTasY
**
Beiträge: 38
Registriert: Mo, 19.11.2012 19:08

Re: [Makro] "Speicherknopf"

Beitrag von eXTasY »

Hi

Danke =)
Ich hab mir das alles mal durchgelesen und hab noch ein kurzes anliegen.

Hat jemand für mich wie ne Beispieldatei, wo man mit HIlfe eines Makros einen Zellwert in eine andere Zelle schreibt?

Danke

MFG
eX
Benutzeravatar
lorbass
********
Beiträge: 4116
Registriert: Mo, 01.05.2006 21:29
Wohnort: Bonn

Re: [Makro] "Speicherknopf"

Beitrag von lorbass »

eXTasY hat geschrieben: ne Beispieldatei, wo man mit HIlfe eines Makros einen Zellwert in eine andere Zelle schreibt
Hast du Stephans Hinweis auf Michael Dannenhöfers StarBasic / OpenOffice.org Basic FAQ übersehen? Sind das nicht Beispiele genug? Was erwartest du noch?

Gruß
lorbass
eXTasY
**
Beiträge: 38
Registriert: Mo, 19.11.2012 19:08

Re: [Makro] "Speicherknopf"

Beitrag von eXTasY »

Doch hab ich gesehen.
Hab schon ein wenig was, aber muss dennoch ne (doofe) frage stellen

mycell = mysheet.getCellRangeByName("B1")

kann ich in der zeile irgendwie immer die zelle erweitern also zu B2, B3, ...???

Danke schonmal

MFG
eX
Benutzeravatar
lorbass
********
Beiträge: 4116
Registriert: Mo, 01.05.2006 21:29
Wohnort: Bonn

Re: [Makro] "Speicherknopf"

Beitrag von lorbass »

Stephan hat auch das Werk OpenOffice.org-Makros Erklärt von Andrew Pitonyak verlinkt. Darin findest du
[i]Andrew Pitonyak[/i] hat geschrieben:getCellRangeByName(name)
Namensbasierter Zugriff auf einen Zellbereich innerhalb des Bereichs. Der String enthält das Standardformat für den direkten Bezug auf die Zellen – etwa „B2:D5“ oder „$B$2“ - oder festgelegte Namen für Zellbereiche.
Beantwortet das deine Frage?

Gruß
lorbass
eXTasY
**
Beiträge: 38
Registriert: Mo, 19.11.2012 19:08

Re: [Makro] "Speicherknopf"

Beitrag von eXTasY »

Net wirklich, sorry.

Beim lesen kann ich ja bei der Zelle (0,n) hernehmen und lasse n hochzählen.
Das müsste ja zum schreiben auch gehen, nur leider kommt ein Fehler wenn ich es mit (1,n) zB mache.

Ich sollte mich evtl auch etwas deutlicher ausdrücken, aber ist schwierig sorry.

Ich glaub ich habe es =)

Code: Alles auswählen

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

sub ZellenInTabellen  

Dim i As Integer

myDoc = thisComponent 
mySheet = myDoc.sheets(0)
mycell = mysheet.getCellByPosition(0,0)  'Anzahl an Durchlauf
myString = mycell.string 
n = myString
i = 0

'----------------------------------------------------------

Line2: 'Sprungmarke

If i<n Then

' Lesen einer Zelle
mycell = mysheet.getCellByPosition(1,i+1) 
myString = mycell.string 

' Schreiben in nebenstehender Zelle
mycell = mysheet.getCellByPosition(2,i+1)
mycell.string = myString

' löschen des Wertes in LeseZelle
mycell = mysheet.getCellByPosition(1,i+1) 
mycell.string = ""

'hochsetzen von n
i=i+1 

'Wartezeit
#5

GoTo Line2 ' Sprung zu Line1

Else
' Ausgabe der Übernahme
print i,"Wert(e) übertragen"

End If

'----------------------------------------------------------

End Sub
Wäre schön, wenn jemand mal kurz drüberfliegt und mir evtl Fehler hier aufzeigt bzw was ich evtl anders machen kann.

MfG
eX
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: [Makro] "Speicherknopf"

Beitrag von F3K Total »

Hallo,
ja, dein Code funktioniert! Herzlichen Glückwunsch.
Nun zwei Tipps:
  • Da in A1 eine Zahl steht, solltest Du auch eine Zahl auslesen (.value) und keinen Text(.string). Du merkst zwar keinen Unterschied, weil Basic so schlau ist den Text in eine Zahl zu konvertieren, aber dies kann an anderen Stellen zu Problemen führen.
  • statt goto und Sprungmarke kannst du eine for-next-Schleife nehmen
Hier ein Beispiel dafür:

Code: Alles auswählen

sub ZellenInTabellen 
    Dim i As Integer
    Dim n As Integer
    myDoc = thisComponent
    mySheet = myDoc.sheets(0)
    mycell = mysheet.getCellByPosition(0,0)  'Anzahl an Durchlauf
    myValue = mycell.value
    n = myValue-1
    for i = 0 to n
        ' Lesen einer Zelle
        mycell = mysheet.getCellByPosition(1,i+1)'Startzelle = B2
        myString = mycell.string
        ' Schreiben in nebenstehender Zelle
        mycell = mysheet.getCellByPosition(2,i+1)
        mycell.string = myString
        ' löschen des Wertes in LeseZelle
        mycell = mysheet.getCellByPosition(1,i+1)
        mycell.string = ""
    next i
    if n = 0 then sAnzahl = "einen Wert übertragen" else sAnzahl = n & " Werte übertragen"
    print sAnzahl
End Sub
Gruß R
eXTasY
**
Beiträge: 38
Registriert: Mo, 19.11.2012 19:08

Re: [Makro] "Speicherknopf"

Beitrag von eXTasY »

Hi,

Danke =)

Hatte noch ein Problem, aber das hat sich mit deinem Vorschlag erschlagen =)

MFG
eX
eXTasY
**
Beiträge: 38
Registriert: Mo, 19.11.2012 19:08

Re: [Makro] "Speicherknopf"

Beitrag von eXTasY »

Hi Leute,

ich hab noch ne andere Frage ^^

Ich habe in Textfeld erstellt und das Makro dort zugewiesen.
Mein Problem ist, wenn ich die Datei schließe und dann wieder öffne ist das Textfeld weg ^^

MfG
eX
Benutzeravatar
lorbass
********
Beiträge: 4116
Registriert: Mo, 01.05.2006 21:29
Wohnort: Bonn

Re: [Makro] "Speicherknopf"

Beitrag von lorbass »

eXTasY hat geschrieben:Mein Problem ist, wenn ich die Datei schließe und dann wieder öffne ist das Textfeld weg
Wie wär's mit Speichern vor dem Schließen?

Gruß
lorbass
Antworten