Generelle Anmerkungen zu Basic Maker eines Umsteigers von VBA

Antworten
knatterfux
Beiträge: 42
Registriert: 06.11.2020 12:17:10

Generelle Anmerkungen zu Basic Maker eines Umsteigers von VBA

Beitrag von knatterfux »

Hallo,

Softmaker Office 2021 ist eine hervorragende Software. Vieles ist vergleichbar zu MS Office, so dass man sich sofort zurechtfindet. Einiges ist sogar besser gelöst (meine Meinung). Es ist Alles sehr gut durchdacht und umgesetzt. Das muss ja mal gesagt werden.

ABER - Zwischen MS VBA und BasicMaker liegen Lichtjahre, leider zu Gunsten von VBA.
Ich habe in VBA (Excel) eine Reihe von z.T. sehr komplexen Makros erstellt. Und auch mit einigen anderen Programmiersprachen habe ich privat und beruflich zu tun. Nun versuche ich die VBA Makros in BasicMaker für Planmaker Tabellen neu zu erstellen und habe dabei große Probleme.
Das Handbuch hilft hier auch nicht wirklich weiter. Es ist meiner Meinung nach zu theoretisch aufgebaut. Es fehlt vor allem an realitätsnahen praktischen Beispielen. Leider bekommt man diese im Gegensatz zu VBA auch nicht über Google. Aktuell scheitere ich schon an so einfachen Dingen wie:
-Markierung und Löschen von Spalten/Zeilen in PM
-Ermitteln von Zellinhalten (um davon abhängig verschiedene Aktionen auszuführen)
-Positionierung des Cusors innerhalb eines WorkSheets
-Kopieren von Zellbereichen
...um nur mal einige zu nennen.
Und was mir vor allem fehlt, ist die Möglichkeit Scipte durch Aktionen in PM aufzuzeichnen (vgl. Makros in Excel), um so ggf. die Befehlssyntax zu ermitteln.
Wie gesagt, ich bin Umsteiger. Es gibt doch hier im Forum bestimmt User, die schon länger mit BasicMaker arbeiten. Wie sind denn dort die Erfahrungen (als Umsteiger)? Momentan komme ich mir bei meinen Versuchen wie ein Programmierlegastheniker vor.
Vielleicht mag der Eine oder Andere mal berichten.

Gruß
Knatterfux
martin-k
SoftMaker Team
SoftMaker Team
Beiträge: 6132
Registriert: 03.12.2003 14:32:06
Kontaktdaten:

Re: Generelle Anmerkungen zu Basic Maker eines Umsteigers von VBA

Beitrag von martin-k »

Das geht alles, eigentlich auch genauso wie in Excel:
sub x
dim pm as object
set pm = CreateObject("PlanMaker.Application")
pm.Visible = True
pm.Workbooks.Add

' Formel setzen
pm.ActiveSheet.Range("C1:D6").Formula = "=ZEICHEN(64)"

' Formel anzeigen
MsgBox pm.ActiveSheet.Range("C1").Formula

' Spalte markieren
pm.ActiveSheet.Columns(2).Select

' Spalte löschen
pm.ActiveSheet.Columns(2).Delete

' Bereich markieren und kopieren
pm.ActiveSheet.Range("B1:C6").Copy

' Bereichsinhalt einfügen. Formeln bleiben erhalten
pm.ActiveSheet.Range("H1:I6").Paste

' Cursor setzen
pm.ActiveSheet.Range("E3").Select
end sub
Martin Kotulla
SoftMaker Software GmbH
knatterfux
Beiträge: 42
Registriert: 06.11.2020 12:17:10

Re: Generelle Anmerkungen zu Basic Maker eines Umsteigers von VBA

Beitrag von knatterfux »

und wie würden die Beispiele aussehen, wenn ich die Zellen bzw. Zellbereiche nicht mit den konkreten Namen (G3 oder B1:C6) anspreche sondern mit berechneten Werten (integer Variablen)? Also statt "G3" Spalte 5 Zeile 3 mit den Werten i=5 und j=3

pm.ActiveSheet.Range("G" & j).Select <-- das funktioniert, der Cursor steht dann in G3 weil die Zeile ja nummerisch ist
pm.ActiveSheet.Range(i & j).Select <-- das funktioniert nicht und gib eine Fehlermeldung weil die Spalte nicht nummerisch ist.

Aber wie erreicht man, dass das Programm die Zahl in den Spaltenbuchstaben umwandelt (4 --> "D")
Bei Excel lautet der Befehl dann: Range(Cells(1,1), Cells(10,2)), also nummerische Werte für Zeilen und Spalten. DAs funktioniert hier aber nicht.

Gruß
Knatterfux
martin-k
SoftMaker Team
SoftMaker Team
Beiträge: 6132
Registriert: 03.12.2003 14:32:06
Kontaktdaten:

Re: Generelle Anmerkungen zu Basic Maker eines Umsteigers von VBA

Beitrag von martin-k »

Bitte lesen Sie sich im BasicMaker-Handbuch die Dokumentation des Range-Objekts durch. Ich füge hier einfach nur einige Beispiele aus dem Handbuch ein:
' Die erste Zelle des Range-Objekts mit dem Wert 42 füllen
pm.ActiveSheet.Range("B5:B10").Item(1, 1).Value = 42

' Kürzer, da Item die Defaulteigenschaft des Range-Objekts ist
pm.ActiveSheet.Range("B5:B10")(1, 1).Value = 42

' Die erste Zelle der aktuellen Selektion umformatieren
pm.ActiveSheet.Selection.Item(1, 1).Font.Size = 24

' Wiederum kürzer durch Nutzung der Defaulteigenschaft
pm.ActiveSheet.Selection(1, 1).Font.Size = 24
Martin Kotulla
SoftMaker Software GmbH
knatterfux
Beiträge: 42
Registriert: 06.11.2020 12:17:10

Re: Generelle Anmerkungen zu Basic Maker eines Umsteigers von VBA

Beitrag von knatterfux »

vielleicht bin ich ja zu blöd um dieses Handbuch zu verstehen.
Aber dem Bereich "Range-Objekt" dort kann ich beim besten Willen nicht entnehmen, wie unten stehendes Beispiel mit Variablen umgesetzt werden kann wenn statt "C4" und "L73" für die Zeilen die Variablen "a" , "b" , "i" und "j" verwendet werden:

wenn a=3, b=12, i=4, j=73
Also statt: Range("C4:L73") --> Range(C & i: L & j)
oder auch statt: Range("C4:L73") --> Range(a & i: b & j)

Beispiel:
pm.Application.ActiveWorkbook.Sheets.Item(1).activate
pm.ActiveSheet.Selection.Range("C4:L73").copy
pm.Application.ActiveWorkbook.Sheets.Item(35).activate
pm.ActiveSheet.Selection.Item(1, 1).paste

Gruß
Knatterfux
SuperTech
SoftMaker Team
SoftMaker Team
Beiträge: 3314
Registriert: 11.03.2020 17:30:08

Re: Generelle Anmerkungen zu Basic Maker eines Umsteigers von VBA

Beitrag von SuperTech »

Wir haben ein komplettes Kapitel zu diesem Thema "Sprachelemente von SoftMaker Basic" auf Seite 31 im aktuellen Benutzerhandbuch und Variablen auf Seite 34 im aktuellen Benutzerhandbuch mit Details. Bitte prüfen Sie dies.

Für Variablen im Bereich können Sie einfach wie folgt konvertieren:

Code: Alles auswählen

Range("C4:L73 ") -> Range("C" & i & ":L" & j)
Antworten

Zurück zu „BasicMaker 2021 für Windows“