Porównujemy VBA ze StarBasic (Tablica 1). Podstawówka - Działania na(w) komórkach arkusza.

Nr.

Kod napisany w StarOfficeBasic5.2 - StarCalc

Kod - odpowiednik napisany w MsVBA - Excel

Wybranie komórki o współrzędnych A1

1.1

Sub WybierzKomorke()
ActiveWindow.GoToCell("A1")
End Sub
Sub WybierzKomorke()
Range("A1").Select
End Sub

Wybranie obszaru wyznaczonego współrzędnymi A1:E10 (górny lewy róg : dolny prawy róg)

1.2

Sub WybierzObszar()
ActiveWindow.GoToCell("A1:E10")
End Sub
Sub WybierzObszar()
Range("A1:E10").Select
End Sub

Wybranie arkusza nr1

1.3

Sub WybierzArkusz()
ActiveWindow.JumpToTable(1)
End Sub
Sub WybierzArkusz()
Sheets("Arkusz1").Select
End Sub

Wpisanie wartości do komórki B5 (cztery różne sposoby)

1.4

Sub WpiszWartoscDoKomorki_SposA()
Range("B5").Insert(20)
End Sub
Sub WpiszWartoscDoKomorki_SposA()
Range("B5").Value = 20
End Sub

1.5

Sub WpiszWartoscDoKomorki_SposB()
Cells(2,5).Insert(20)
End Sub
Sub WpiszWartoscDoKomorki_SposB()
Cells(5,2).Value = 20
End Sub

1.6

Sub WpiszWartoscDoKomorki_SposC()
ActiveWindow.GoToCell("B5")
Selection.Insert(20)
End Sub
Sub WpiszWartoscDoKomorki_SposC()
Range("B5").Select
Selection.Value = 20
End Sub

1.7

Sub WpiszWartoscDoKomorki_SposD()
??????????
End Sub
Sub WpiszWartoscDoKomorki_SposD()
Range("B4").Select
Selection.Offset(1, 0).Value = 20
End Sub
Odczytanie wartości z komórki B5

1.8

Sub OdczytajWartosc_SposA()
wartosc = Range("B5").Value
End Sub
Sub OdczytajWartosc_SposA()
wartosc = Range("B5").Value
End Sub

1.9

Sub OdczytajWartosc_SposB()
wartosc = Cells(2, 5)
End Sub
Sub OdczytajWartosc_SposB()
wartosc = Cells(5, 2)
End Sub
Przykład na oczyszczenie (wyzerowanie) zaznaczonej komórki

1.10

Sub WyzerujKomorke()
Selection.Insert( "" )
End Sub
Sub WyzerujKomorke()
Selection.Value = ""
End Sub
Nadawanie koloru czcionce (w tym wypadku czcionka ma być czerwona)

1.11

Sub KolorText()
Selection.Font.Color = 14426880
End Sub
Sub KolorText()
Selection.Font.ColorIndex = 3
End Sub
Nadawanie koloru wypełnieniu komórki (w tym wypadku tło w komórce ma być czerwone)

1.12

Sub KolorWypelnienia()
Selection.Interior.ColorIndex = 3
End Sub
Sub KolorWypelnienia()
Selection.Interior.Style = 1
Selection.Interior.Backcolor = 14426880

End Sub
Zapisanie naszego pliku jako "Nasz.xls" (w miejscu dokładnie określonym ścieżką "D:\Doku\...)"

1.13

Sub ZapiszJako()
??????????
End Sub
Sub ZapiszJako()
ActiveWorkbook.SaveAs Filename:="D:\Doku\Nasz.xls"
End Sub
Włącz/Wyłącz ochronę aktywnego arkusza

1.14

Sub ChronArkusz()
ActiveTable.Protect(TRUE,"")
End Sub
Sub ChronArkusz()
ActiveSheet.Protect
End Sub

1.15

Sub NieChronArkusza()
ActiveTable.Protect(FALSE,"")
End Sub
Sub NieChronArkusza()
ActiveSheet.Unprotect
End Sub
Wyłącz/Włącz widoczność arkusza (Arkusza1)

1.16

Sub UkryjArkusz1()
Tables.Hide("Arkusz1")
End Sub
Sub UkryjArkusz1()
Sheets("Arkusz1").Visible = False
End Sub

1.17

Sub OdkryjArkusz1()
Tables.Show("Arkusz1")
End Sub
Sub OdkryjArkusz1()
Sheets("Arkusz1").Visible = True
End Sub
Spowodowanie akcji wydruku aktywnego arkusza

1.16

Sub DrukujArkusz1()
SelectedSheets.PrintOut
End Sub
Sub DrukujArkusz1()
ActiveWindow.PrintDefault()
End Sub
Przykład na zerowanie zawartości wybranej komórki z jednoczesnym przejściem w dół o jedną komórkę

1.18

Sub WyczyscKomorke()
Selection.Insert( "" )
Selection.JumpToNextCell()

End Sub
Sub WyczyscKomorke()
Selection.Value = ""
Selection.Offset(1, 0).Select

End Sub

Przykłady makra pokazującego wykorzystanie bardzo popularnego w VB podstawowego dialogu z użytkownikiem - inputbox

1.19

Sub WpisDoKomorki()
Dim WartoscKomorki As String
Dim Komunikat As String
Dim Tytul As String
Dim WartDomysl As String
Komunikat = "Proszę coś wpisać"
OpisDialogu = "Twoje Okno Dialogowe"
WartDomysl = "wartosc domyslna"
WartoscKomorki = InputBox (Komunikat,Tytul,WartDomysl)
Selection.Insert( WartoscKomorki )
Selection.JumpToNextCell()
End Sub
Sub WpisDoKomorki()
Dim WartoscKomorki As String
Dim Komunikat As String
Dim Tytul As String
Dim WartDomysl As String
Komunikat = "Proszę coś wpisać"
OpisDialogu = "Twoje Okno Dialogowe"
WartDomysl = "wartosc domyslna"
WartoscKomorki = InputBox(Komunikat,Tytul,WartDomysl)
Selection.Value = WartoscKomorki
Selection.Offset(1, 0).Select
End Sub
Przykład na skopiowanie wartości komórki C5 do komórki D5

1.20

Sub PrzepiszWartosc()
wartosc = Range("C5").Value
Range("D5").Insert(wartosc)
End Sub
Sub PrzepiszWartosc()
wartosc = Range("C5").Value
Range("D5").Value = wartosc
End Sub

Makro 1.19 - Wykonuje pośrednie uzupełnienie z poziomu VBA aktualnej komórki wartością wpisaną przez użytkownika w oknie dialogowym inputbox, a potem wykonuje przeskok o jedną komórkę w dół.

tutaj są do pobrania przykładowe pliki StarOffice i Excel (staroffice.zip) z powyższymi makrami

powrót do strony głównej data aktualizacji [tablica1] - 25 czerwca 2003 adamgra@poczta.onet.pl

Porównujemy VBA ze StarBasic (Tablica 2). Podstawówka - prcedury uniwersalne (timer).

Nr.

Kod napisany w StarOfficeBasic5.5 (6) - StarCalc

Kod - odpowiednik napisany w MsVBA - Excel

2.1

Sub DajGlos()
Beep
End Sub
Sub DajGlos()
beep
End Sub

2.2

Sub WstrzymStandardowy5sek()
Dim stoper
stoper = Now + TimeValue("00:00:05")
Do While Now < stoper
Loop
Beep
End Sub
Sub WstrzymStandardowy5sek()
Dim stoper
stoper = Now + TimeValue("00:00:05")
Do While Now < stoper
Loop
Beep
End Sub

Makro 2.1 - To jest słynna i chyba najkrótsza procedura w VB! Ten program był moim pierwszym jaki zadziałał poprawnie w mojej karierze związanej z VB. Powinien zadziałać chyba we wszystkich odmianach VB (oczywiście w StarOffisie działa lux). Od razu narzuca mi się refleksja, że odpowiednikiem w hobby radiotechnicznym jest takie super urządzenie dla początkujących - radio detektorowe z diodą i kaloryferem w roli głównej (to też od razu działa i jest proste).

Makro 2.2 - Wykonuje wstrzymanie wykonywania programu na określoną w procedurze ilość sekund (w tym przypadku 5sek).
NIE MA tu różnic pomiędzy kodami dla VBA i SOBasic !

tutaj są do pobrania przykładowe pliki StarOffice i Excel (staroffice.zip) z powyższymi makrami

powrót do strony głównej data pojawienia sie [tablica2] - 11maj2003 adamgra@poczta.onet.pl

Porównujemy VBA ze StarBasic (Tablica 3). Gimnazjum - Prcedury uniwersalne (timer).

Nr.

Kod napisany w StarOfficeBasic5.2 (6) - StarCalc

Kod - odpowiednik napisany w MsVBA - Excel

3.1

Sub Wstrzym5sek()
Beep
Wait 5000
Beep
End Sub
Public Declare Sub Sleep Lib "kernel32" _
(ByVal dwMilliseconds As Long)

Sub
WstrzymAPI5sek()
Beep
Sleep 5000
Beep
End Sub

3.2

Sub Wstrzym5sek()
Dim ChwilaA as
Long
Dim ChwilaB as
Long
Dim LiczbaTaktow as
Long
Beep
ChwilaA = GetSystemTicks()
Wait 5000
ChwilaB = GetSystemTicks()

LiczbaTaktow = (ChwilaB - ChwilaA)
Beep
MsgBox "" & LiczbaTaktow & " taktów" ,0,"ilość
taktów między dźwiękami"
End Sub
Public Declare Sub Sleep Lib "kernel32" _
(ByVal dwMilliseconds As Long)

Sub WstrzymAPI5sek()
Dim ChwilaA as
Date
Dim ChwilaB as
Date
Dim LiczbaTaktow as
Date
Beep
ChwilaA = Now
Sleep 5000
ChwilaB = Now

LiczbaTaktow = (ChwilaB - ChwilaA)
Beep
MsgBox "" & LiczbaTaktow & "
sekund" ,0,"ilość sekund między dźwiękami"
End Sub

3.3

Sub Wstrzym5sek()
Dim ChwilaA as Date
Dim ChwilaB as Date
Dim LiczbaTaktow as Date
Beep
ChwilaA =
Now
Wait 5000
ChwilaB =
Now
LiczbaTaktow = (ChwilaB - ChwilaA)
Beep
MsgBox "" & LiczbaTaktow & " sekund" ,0,"ilość
taktów między dźwiękami"
End Sub
Public Declare Sub Sleep Lib "kernel32" _
(ByVal dwMilliseconds As Long)

Sub WstrzymAPI5sek()
Dim ChwilaA as Date
Dim ChwilaB as Date
Dim LiczbaTaktow as Date
Beep
ChwilaA =
Now
Sleep 5000
ChwilaB =
Now
LiczbaTaktow = (ChwilaB - ChwilaA)
Beep
MsgBox "" & LiczbaTaktow & " sekund" ,0,"ilość
sekund między dźwiękami"
End Sub

Makro 3.1 - To jest opóźnienie zrealizowane za pomocą kodu napisanego w możliwie najkrótszej (najładniejszej) formie.
W wersji dla excela musiałem się podeprzeć zadeklarowaniem zewnętrznej funkcji API* (ta deklaracja nie jest oczywiście potrzebna w SOBasic).
*[funkcje API deklarujemy w MsVB na początku modułu - przed wszystkimi procedurami]

Makro 3.2 - Wykonuje wstrzymanie wykonywania programu na określoną w procedurze ilość milisekund (w tym przypadku 5000). Uwaga - StarOffice'owskie GetSystemTiks() równa się tylko "ideowo" z VisualBasic,owym Now.

Makro 3.3 - Wykonuje wstrzymanie wykonywania programu na określoną ... Tym razem widać, że Now ze StarOffice'a równa się Now z Excela bez dwóch zdań.

tutaj są do pobrania przykładowe pliki StarOffice i Excel (staroffice.zip) z powyższymi makrami

powrót do strony głównej data pojawienia sie [tablica3] - 27maj2003 adamgra@poczta.onet.pl