Visual Basic for Applications

Visual Basic for Applications, VBAjęzyk programowania oparty na Visual Basicu (VB) zaimplementowany w aplikacjach pakietu Microsoft Office oraz kilku innych, jak na przykład AutoCAD i WordPerfect. Ta uproszczona wersja Visual Basica służy przede wszystkim do automatyzacji pracy z dokumentami, na przykład poprzez makropolecenia.

Podstawową różnicą między VBA a VB jest to, że VBA nie pozwala na tworzenie samodzielnych skompilowanych aplikacji typu EXE. Kod programu napisanego w VBA zawsze zawarty jest w dokumencie utworzonym przy pomocy programu obsługującego VBA - na przykład w pliku *.DOCX edytora MS Word lub pliku *.XLS/XLSM arkusza MS Excel. Program taki wymaga zatem środowiska uruchomieniowego, którym jest zainstalowana na komputerze aplikacja obsługująca dany dokument.

Wyjątkiem symulującym samodzielnie działające aplikacje są pliki utworzone w programie Microsoft Access, które — przy zakupie rozszerzenia Microsoft Office Developer lub innego[1] — pozwalają na uruchamianie plików Accessa na dowolnej liczbie komputerów w tzw. Microsoft Access Runtime, bez konieczności wyposażania każdego pojedynczego komputera w pełny pakiet Microsoft Office.

Od wersji 2000 pakiet Microsoft Office został wyposażony w oddzielny Edytor Visual Basic, dobrze znany programistom Visual Basic 6.0, co znacznie ułatwia pracę z kodem. W wersji 2000 dodano także możliwość współpracy programu Microsoft Access z bazą danych Microsoft SQL Server w architekturze klient-serwer.

Przykłady programów

Przed rozpoczęciem pisania programu w Edytorze VBA (uruchamianym poprzez wciśnięcie Alt+F11), należy dodać dodatek Solver jako odwołanie do VBA (jeżeli będziemy z niego korzystali). W tym celu należy wybrać w Edytorze Tools → References i zaznaczyć Solvera. Jeżeli go tam nie ma, to należy go odnaleźć w katalogu zawierającym Office poprzez guzik Browse.

Pisanie makra rozpoczynamy, klikając prawym przyciskiem w dowolnym miejscu w oknie VBAProject (zwykle na górze po lewej stronie) i z menu wybierając Insert → Module. Jest to o tyle ważne, że makra napisane nie w „Modules” tylko „Microsoft Excel Objects” nie będą działały. Po wstawieniu nowego modułu, po prawej stronie pojawia się puste pole edycji, w którym możemy zacząć pisać swój program. Poniżej znajduje się kilka przykładów, które powinny pomóc zrozumieć składnię VBA. Poniższe przykłady można skopiować i bezpośrednio wstawić do modułu. Makro uruchamia się poprzez kliknięcie na zielony znak Run (lub klawisz F5).

Przykładowy program napisany w VBA:

    Sub proba()
    Dim i As Integer                'deklaracja zmiennej - nie jest wymagana w VBA
        For i = 1 To 10             'uruchomienie petli - 10 powtórzeń
            Cells(i, 1) = i ^ 2     'wypelnienie komórki wartością po prawej stronie znaku równa się
        Next i                      'zwiększenie i o jeden
    End Sub                         'zakończenie makra

Ten prosty program wstawia do komórek z zakresu „A1:A10” kwadraty kolejnych liczb naturalnych (od 1 do 10)

Przy pomocy VBA można także deklarować funkcje użytkownika. Poniższy program wprowadzi funkcję, która jako argument przyjmuje liczbę naturalną (n), a zwraca sumę ciągu arytmetycznego, gdzie pierwszy wyraz to 1, ostatni to n, a różnica ciągu to 1.

    Function aryt(n As Integer) As Integer
    Dim i, wartosc As Integer       'deklaracja zmiennych
        wartosc = 0                 'przypisanie wartości zero zmiennej wartosc
        For i = 1 To n              'uruchomienie pętli
            wartosc = wartosc + i   'zwiększenie zmiennej wartosc o i
        Next i                      'zwiększenie i o jeden
    aryt = wartosc                  'przypisanie zmiennej wyjściowej wartości zawartej w zmiennej wartość
    End Function

Poniżej znajduje się bardziej skomplikowany program, którego celem jest pokazanie jak:

  • wpisywać formuły (a nie wartości) do arkusza przy pomocy VBA
  • dokonywać operacji na kolumnach (np. zmiana szerokości)
  • uruchomić Tabelę Danych z poziomu VBA
  • wstawić wykres
  • uruchomić Solvera z poziomu VBA
  • jakie słabości ma Solver

Pierwsza część programu tworzy funkcję celu (sinusoida z trendem wzrostowym) oraz warunek ograniczający w postaci ujemnie nachylonej prostej (dopuszczalne rozwiązania znajdą się pod prostą). Następnie będę chciał przedstawić na wykresie funkcję celu i warunek ograniczający. W tym celu zbuduję Tabelę Danych i na jej podstawie narysuję wykres. Na koniec rozwiążę zadanie maksymalizacji funkcji celu przy zadanym warunku ograniczającym. Okaże się, że Solver znajduje maksimum w punkcie x=2,094 (f=1,91). Z wykresu wynika jednak, że jest to maksimum lokalne. Dlatego żeby znaleźć maksimum globalne, trzeba rozpocząć poszukiwanie od np. x=5. Wtedy okaże się, że maksimum funkcji jest w x=7,54 (f=4,72). VBA może być więc przydatne w poszukiwaniu maksimów globalnych, ponieważ można wprowadzić np. pętlę, która będzie rozwiązywała zadanie optymalizacji wiele razy, startując z różnych punktów.

  Sub skomplikowany_program()
  ''''stworzenie funkcji celu i wzoru na prostą ograniczającą'''
    Range("b1") = "cel"
    Range("b2").Formula = "=sin(" & Cells(2, 3).Address & ")+ 1/2*" & Cells(2, 3).Address
    Range("c1") = "x="
    Range("a4") = "prosta"
    Range("b4").Formula = "=-0.7*" & Cells(2, 3).Address & "+10"
  ''''stworzenie formuły, która będzie wykorzystywana przez Solvera jak warunek ograniczający'''
    Range("a6") = "warunek"
    Range("b5").Formula = "=" & Range("b2").Address & "-" & Range("b4").Address
    Range("c5") = "<"
    Range("d5") = 0
  ''''stworzenie "pierwszej" kolumny Tabeli Danych (a więc x=0, x=0.2, x=0.4 ... x=10)'''
    Cells(10, 1) = 0
    For i = 1 To 50
        Cells(i + 10, 1) = Cells(i + 9, 1) + 0.2
    Next i
  ''''zmiana szerokości kolumny'''
    Columns(2).ColumnWidth = 12
  ''''dodanie tekstu i formuły w nagłówku "drugiej" kolumny Tabeli Danych'''
    Range("b8") = "funkcja celu"
    Range("b9").Formula = "=" & Range("b2").Address
  ''''dodanie tekstu i formuły w nagłówku "trzeciej" kolumny Tabeli Danych'''
    Range("c8") = "prosta"
    Range("c9").Formula = "=" & Range("b4").Address
  ''''stworzenie Tabeli Danych na podstawie 3 kolumn'''
    Range(Cells(9, 1), Cells(60, 3)).Table columninput:=Range("c2")
  ''''stworzenie wykresu na podstawie Tabeli Danych'''
      Charts.Add
        ActiveChart.ChartType = xlXYScatterSmoothNoMarkers
        ActiveChart.SetSourceData Source:=Sheets("Arkusz1").Range("A10:C60"), PlotBy _
           :=xlColumns
           ActiveChart.Location Where:=xlLocationAsObject, Name:="Arkusz1"
        ActiveChart.SeriesCollection(2).Select
  ''''wprowadzenie zadania optymalizacji do Solvera - maksymalizacja B2 poprzez zmianę C2'''
    solverreset
    solverok setcell:=Range("b2"), maxminval:=1, bychange:=Range("c2")
  ''''dodanie warunku ograniczającego - B5 to lewa strona, 1 to znak ≤, D5 to prawa strona'''
    solveradd cellref:=Range("b5"), relation:=1, formulatext:=Range("d5")
    solversolve userfinish:=True
  End Sub

Przyszłość VBA

Obecnie (2007 rok) Microsoft planuje namówienie dotychczasowych twórców makr VBA w programach Office, aby ci zaczęli korzystać z tzw. Office Business Applications(inne języki) (OBA)[2] dającego szersze możliwości (np. kod zarządzany).

Zobacz też

Przypisy

Linki zewnętrzne

Read other articles:

Antoine Griezmann Antoine Griezmann bersama Prancis pada 2018Informasi pribadiNama lengkap Antoine Griezmann[1]Tanggal lahir 21 Maret 1991 (umur 32)[2]Tempat lahir Mâcon, PrancisTinggi 175 cm (5 ft 9 in)[3]Posisi bermain Penyerang, gelandang serangInformasi klubKlub saat ini Atletico MadridNomor 8Karier junior1997–1999 Entente Charnay et Mâcon1999–2005 Mâcon2005–2009 Real SociedadKarier senior*Tahun Tim Tampil (Gol)2009–2014 Real Socieda...

 

Marion MaréchalMPMarion Maréchal-Le Pen pada tahun 2018 Anggota Parlemen Prancisdapil Konstituensi Vaucluse KetigaPetahanaMulai menjabat 20 Juni 2012 PendahuluJean-Michel FerrandPenggantiPetahanaMayoritas18 920 (42,09%)[1] Informasi pribadiLahirMarion Jeanne Caroline Maréchal-Le Pen10 Desember 1989 (umur 34)Saint-Germain-en-Laye, YvelinesKebangsaanPrancisPartai politikFront National (2008–sekarang)Suami/istriMatthieu Decosse ​(m. 2014)​Hubung...

 

List of a type of aves in a Southern Asian country India, officially the Republic of India, is a country in South Asia. It is made up of 28 states and 8 union territories. All Indian states have their own government and union territories come under the jurisdiction of the central government. As with most of the other countries India, has a national emblem—the Lion Capital of Sarnath. Apart from India's national emblem, each of its states and union territories have their own seals and symbol...

Губерния Российской империиНовгородская губерния Герб 58°26′00″ с. ш. 32°23′00″ в. д.HGЯO Страна  Российская империя Адм. центр Новгород История и география Дата образования 1727 год Дата упразднения 1 августа 1927 Площадь 104 163,4 вёрст² Население Население 1 367 022[1]&...

 

Benteng MarlboroughNama sebagaimana tercantum dalamSistem Registrasi Nasional Cagar BudayaBenteng Marlborough Cagar budaya IndonesiaPeringkatNasionalKategoriBangunanNo. RegnasCB.129LokasikeberadaanKota Bengkulu, BengkuluNo. SK SK Menteri No.KM.10/PW.007/MKP/2004 SK Menteri No.205/M/2016 Tanggal SK 3 Maret 2004 26 Agustus 2016 Pemilik IndonesiaPengelolaDinas Pendidikan Kota Bengkulu dan BPCB JambiKoordinat3°47′14″S 102°14′58″E / 3.7873176°S 102.249487°E...

 

Sporting event delegationIndonesia at the2008 Summer OlympicsIOC codeINANOCIndonesian Olympic CommitteeWebsitewww.nocindonesia.or.id (in Indonesian)in BeijingCompetitors24 in 7 sportsFlag bearer I Gusti Made Oka Sulaksana[1]OfficialsRosihan Rasyad (Chief de Mission)MedalsRanked 40th Gold 1 Silver 1 Bronze 4 Total 6 Summer Olympics appearances (overview)1952195619601964196819721976198019841988199219962000200420082012201620202024 Indonesia competed in the 2008 Summer Olympics,...

Joe Fagan Informasi pribadiNama lengkap Joe FaganTanggal lahir 12 Maret, 1921Tempat lahir Liverpool, InggrisTanggal meninggal 30 Juni, 2001 (Umur 80)Tempat meninggal Liverpool, InggrisKepelatihanTahun Tim 1983-85 Liverpool Joe Fagan (12 Maret 1921 – 30 Juni 2001) adalah pemain sepak bola asal Inggris menjadi manajer Liverpool F.C. dari 1983 hingga 1985. Dia menjadi manajer ketika Liverpool meraih Piala Champion ke-4 pada tahun 1984. Dia meninggal pada tahun 2001, dalam usia 8...

 

イスラームにおける結婚(イスラームにおけるけっこん)とは、二者の間で行われる法的な契約である。新郎新婦は自身の自由な意思で結婚に同意する。口頭または紙面での規則に従った拘束的な契約は、イスラームの結婚で不可欠だと考えられており、新郎と新婦の権利と責任の概要を示している[1]。イスラームにおける離婚は様々な形をとることができ、個�...

 

Government response to a major snow storm A snow emergency in Minneapolis. A snow emergency is the active response plan when a snow storm severely impacts a city, county or town in the United States or Canada. Schools, universities, government offices, airports and public buildings may close during a snow emergency to prevent injuries during attempted travel; parking restrictions also usually go into effect to allow snowplows to clear the roads and streets effectively. The precise meaning of ...

Military doctrine focusing on using more force in retaliation to an attack Not to be confused with Dulles' Plan. For the 1984 American film, see Massive Retaliation (film). This article relies largely or entirely on a single source. Relevant discussion may be found on the talk page. Please help improve this article by introducing citations to additional sources.Find sources: Massive retaliation – news · newspapers · books · scholar · JSTOR (February 20...

 

Historical event in 1918 Austria–Hungary Kingdoms and countries of Austria–Hungary:Cisleithania (Empire of Austria[1]): 1. Bohemia, 2. Bukovina, 3. Carinthia, 4. Carniola, 5. Dalmatia, 6. Galicia, 7. Küstenland, 8. Lower Austria, 9. Moravia, 10. Salzburg, 11. Silesia, 12. Styria, 13. Tyrol, 14. Upper Austria, 15. Vorarlberg; Transleithania (Kingdom of Hungary[1]): 16. Hungary proper 17. Croatia-Slavonia; Joint control by Austria and Hungary: 18. Bosnia and Herzegovina (Au...

 

Giacomo Luigi Brignolecardinale di Santa Romana ChiesaRitratto del cardinale Brignole  Incarichi ricoperti Arcivescovo titolare di Nazianzo (1830-1834) Nunzio apostolico nel Granducato di Toscana (1830-1833) Tesoriere generale della Camera Apostolica (1833-1834) Cardinale presbitero di San Giovanni a Porta Latina (1834-1847) Cardinale presbitero di Santa Cecilia (1838-1853) Cardinale vescovo di Sabina (1847-1853) Prefetto della Congregazione dell'Indice dei Libri Proibiti (1849-1853) Cam...

This biography of a living person needs additional citations for verification. Please help by adding reliable sources. Contentious material about living persons that is unsourced or poorly sourced must be removed immediately from the article and its talk page, especially if potentially libelous.Find sources: Beth singer – news · newspapers · books · scholar · JSTOR (October 2021) (Learn how and when to remove this message) In this Spanish name, th...

 

Historic district in New York, United States United States historic placeCity Hall Historic DistrictU.S. National Register of Historic PlacesU.S. Historic district The old Rochester City Hall in June 2010Show map of New YorkShow map of the United StatesLocationS. Fitzhugh St. between Broad and W. Main Sts., Rochester, New YorkyCoordinates43°9′16″N 77°36′50″W / 43.15444°N 77.61389°W / 43.15444; -77.61389Area3 acres (1.2 ha)Built1848ArchitectWarner, A.J....

 

عقد 1330معلومات عامةجزء من القرن 14 بتاريخ عقد 1330 المواليد قائمة مواليد عقد 1330 لديه جزء أو أجزاء 133013311332 عقد 1320 عقد 1340 تعديل - تعديل مصدري - تعديل ويكي بيانات ألفية: ألفية 2 قرون: القرن 13 – القرن 14 – القرن 15 عقود: عقد 1300  عقد 1310  عقد 1320  – عقد 1330 –  عقد 1340  عقد ...

American racing driver (born 1971) Ben KeatingBorn (1971-08-18) August 18, 1971 (age 52)Tomball, TexasAlma materTexas A&M UniversityEmployer(s)Owner, Keating Auto GroupWorld Endurance Championship careerDebut season2006Racing licence FIA BronzeTeamsTeam Project 1 The Racers Group Riley MotorsportsTI Automotive RacingWins2022 Sebring 12 Hours 2022 Glen 2022 24 Hours of Le Mans 2021 Sebring 12 hours 2021 Watkins Glen 240 2021 Laguna Seca 2021 Bahrain 6 Hours 2020 Spa-Franchorchamp...

 

Questa voce o sezione sull'argomento società calcistiche italiane non cita le fonti necessarie o quelle presenti sono insufficienti. Puoi migliorare questa voce aggiungendo citazioni da fonti attendibili secondo le linee guida sull'uso delle fonti. A.C. EsteCalcio Segni distintiviUniformi di gara Casa Trasferta Colori sociali Giallo, rosso Dati societariCittàEste Nazione Italia ConfederazioneUEFA Federazione FIGC CampionatoSerie D Fondazione1920 Presidente Renzo Lucchiari Allenat...

 

American actress, singer, and model Arden ChoCho in 2019Born (1985-08-16) August 16, 1985 (age 38)Amarillo, Texas, U.S.Alma materUniversity of Illinois Urbana-Champaign (BA)OccupationsActresssingermodelYears active2006–presentAgentInnovative Artists Arden Lim Cho[1] (born August 16, 1985)[2] is an American actress, singer and model known for portraying Kira Yukimura in the 2011 MTV television series Teen Wolf[3][4] and Ingrid Yun in the 2022 Ne...

Дифеніл Інші назви біфеніл Ідентифікатори Номер CAS 92-52-4Номер EINECS 202-163-5KEGG C06588ChEBI 17097RTECS DU8050000SMILES C1=CC=C(C=C1)C2=CC=CC=C2[1]InChI InChI=1S/C12H10/c1-3-7-11(8-4-1)12-9-5-2-6-10-12/h1-10HНомер Бельштейна 1634058Номер Гмеліна 3808 Властивості Молекулярна формула C12H10 Молярна маса 154,207 г/моль Зовнішній вигляд біла ре�...

 

فران جيفريز (بالإنجليزية: Fran Jeffries)‏    معلومات شخصية اسم الولادة (بالإنجليزية: Frances Ann Markis)‏  الميلاد 18 مايو 1937   بالو ألتو  الوفاة 15 ديسمبر 2016 (79 سنة)   لوس أنجلوس[1]  سبب الوفاة سرطان  مواطنة الولايات المتحدة  الزوج ديك هايميس (1958–1965)ريتشارد كواين (1965...