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 |