1 / 20

Podstawy programowania w VBA

Podstawy programowania w VBA. Microsoft Office Excel 2003. Edytor VBA. 2 /20. Skrót Alt+F11. Opcje edytora VBA. 3 /20. Najważniejsze opcje edytora VBA. 4 /20. Auto Syntax Check. Auto List Members. . Auto Quick Info. Auto Syntax Check.

luigi
Download Presentation

Podstawy programowania w VBA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Podstawy programowania w VBA Microsoft Office Excel 2003

  2. Edytor VBA 2/20 • Skrót Alt+F11

  3. Opcje edytora VBA 3/20

  4. Najważniejsze opcje edytora VBA 4/20 • Auto Syntax Check • Auto List Members  • Auto Quick Info • Auto Syntax Check ! Zaznaczenie opcji działa od nowo otwartego modułu • Auto Data Tips

  5. Okienko Immediate 5/20 • Skrót Ctrl + G Sub procSub(arg) a = arg + arg Debug.Print a End Sub Function procFunc(arg) procFunc = arg + arg End Function

  6. Hierarchia obiektów 6/20 Komórki A1, A2, …, IV65536 Komórki A1, A2, …, IV65536 Zeszyt1.xls Zeszyt2.xls … Arkusz1 Arkusz2 … Arkusz1 Arkusz2 … Excel WorkSheet Workbook Range Application WorkSheet Range WorkSheets Workbook WorkSheets Workbooks Application.Workbooks(„Zeszyt1.xls”).WorkSheets(„Arkusz1”).Range(„A1”)

  7. Objekty aktywne 7/20 Wartosc = Application.Workbooks(„Zeszyt.xls”). _ Worksheets(„Arkusz1”).Range(„A1”).Value • Jeżeli Zeszyt.xls jest aktualnie otwartym dokumentem Wartosc = Worksheets(„Arkusz1”).Range(„A1”).Value Wartosc = ActiveWorkbook. _ Worksheets(„Arkusz1”).Range(„A1”).Value • oraz Arkusz1 jest aktualnie otwartym arkuszem Wartosc = Range(„A1”).Value Wartosc = ActiveSheet.Range(„A1”).Value Workbook Worksheet

  8. Określenie argumentów dla metod i właściwości 8/20 Object.Protect([Password],[Structure],[Windows]) • Gdy metody i właściwości zwracają wartość adres = ActiveCell.Adress(False, True); adres = ActiveCell.Adress(ColumnAbsolute:=True); ActiveWorkbook.Protect „abc”, True, False ActiveWorkbook.Protect , True, False ActiveWorkbook.Protect Structure:=True Object.Adress([RowAbsolute],[ColumnAbsolute]…) As String

  9. Obiekt Range 9/20 Istnieją 3 możliwości uzyskania objectu Range. • Właściwość Range obiektu Worksheet lub obiektu klasy Range • Właściwość Cells obiektu Worksheet lub obiektu klasy Range • Właściwość Offsetobiektu Range Odwołanie do komórki może być • bezwzględne • względne

  10. Obiekt RangeI. Właściwość Range 10/20 • Właściwość Range zwraca obiekt Range • obiekt.Range(komórka1) • objekt.Range(komórka1,komórka2) • Właściwość Range obiektu Worksheet (przykłady) • ActiveSheet.Range(”A1”).Value=1 • ActiveSheet.Range(”A3:B5”).Value=2 • ActiveSheet.Range(”A3”,”B5”).Value=3 • ActiveSheet.Range(”C1,E3,F2”).Value=4 • Właściwość Range obiektu Range (przykład) ActiveCell.Range(”B2”) = 5 ‘odwołanie względne

  11. Obiekt RangeII. Właściwość Cells 11/20 • Właściwość Cells zwraca obiekt Range • obiekt.Cells(idRow,idColumn) • obiekt.Cells(idRow) • obiekt.Cells • Właściwość Cells obiektu Worksheet(przykłady) • ActiveSheet.Cells(1,1).Value=1 • ActiveSheet.Cells(520).Value=2 • ActiveSheet.Cells.ClearContents • Właściwość Cells obiektu Range(przykłady) • ActiveCell.Cells(3,2).Value=3 ‘odwołanie względne • Range(”B1:C10”).Cells(5).Value=4‘odwołanie względne

  12. Obiekt RangeIII. Właściwość Offset 12/20 • Właściwość Offset zwraca objekt Range • obiekt.Offset(idRow, idColumn) • Właściwość Offsetobiektu Range • ActiveCell.Offset(0,0).Value=3 ‘odwołanie względne • ActiveCell.Offset(-1,2).Value=3 ‘odwołanie względne

  13. Obiekt RangeOdwołanie względne i bezwzględne 13/20 ActiveSheet.Range(”A7”).Value = ”abc” WorkSheets(”Ark1”).Cells(1,1).Value = 123 ActiveCell.Range(”A3”).Value = ”range” Range(”D6”).Cells(1,1).Value = ”cells” ActiveCell.Offset(0,0).Value = ”offset” odwołanie bezwzględne WorkSheet odwołanie względne Range B C A 123 1 2 3 offset Odwołanie względem aktywnej komórki range cells Odwołanie względem komórki D6 abc

  14. Procedury Sub i Function 14/20 Function procFunc(arg) procFunc = arg*2 End Function zm=5 zm = procFunc(zm) MsgBox zm Sub procSub(arg) arg = arg*2 End Sub zm=5 Call procSub(zm) MsgBox zm • nie zwraca wartości • wymaga słowa kluczowego call do wywołania procedury • Argumenty przekazywane są przez referencję • zwraca wartość (wartość zwracana nazywa się tak samo jak funkcja) • argumenty przekazywane są przez wartość • dodaje się do funkcji użytkownika (dostępne z poziomu formuły)

  15. Procedury Sub 15/20 Sub procSub(arg) arg = arg*2 End Sub Sub procSubMain() zm = 5 MsgBox zm Call procSub(zm) MsgBox zm End Sub Sub procSub(byVal arg) arg = arg*2 End Sub Sub procSubMain() zm = 5 MsgBox zm Call procSub(zm) MsgBox zm End Sub

  16. Definiowanie typów danych 16/20 Dim zm1 As Intiger Dim zm2 As Double Dim zm3 As String*4 Dim zm4 As String zm1 = 10 zm2 = 10,67 zm3 = ”abcd” zm4 = ”abcd” zm5 = 10 zm6 = 10,67 zm7 = ”abcd” ‘liczba całkowita ‘liczba rzeczywista ‘łańcuch znaków (stała długość) ‘łańcuch znaków (zmienna długość) ‘typ Intiger; 2 bajty ‘typ Double; 8 bajtów ‘typ String; 4 bajty ‘typ String; 14 bajtów ‘typ Variant; 16 bajtów ‘typ Variant; 16 bajtów ‘typ Variant; 26 bajtów

  17. Instrukcje warunkowe i pętle 17/20 IFwarunekThen … Else If … Else … End IF For Each i in tab … Next i For i=1 To 5 … Next i • Select Case opcja • Case 1 • … • Case 2 • … • Case Else • … • End Select Do While warunek … Loop Do … Loop While warunek

  18. Tablice 18/20 ‘Deklarowanie tablicy o 5 elementach typu całkowitego Dim tablicaInt(5) As Integer ‘Deklarowanie tablicy dynamicznej typu tekstowego Dim tablicaStr() As String ‘Nadanie rozmiaru tablicy n=5 ReDim tablicaStr(1 To n) ‘Przypisanie wartości pierwszemu elementowi tablicy tablicaStr(1)= ”abcdef” ‘Wykorzystanie pętli for do wypełnienia tablicy For i=1 To n tablicaStr(i) = ”abcdef” Next i

  19. Właściwość Selection objektu Application 19/20 Areas(1) Selection Areas(2) obiekt Range Areas(3) Areas(4) Areas(5) Lob = Selection.Areas.Count ‘ Lob=5 Lkom = Selection.Areas(1).Count ‘ Lkom=4 w = Selection.Areas(1).Row ‘ w=1 k = Selection.Areas(1).Column ‘ k=1 Lw = Selection.Areas(1).Rows.Count ‘ Lw=2 Lk = Selection.Areas(1).Columns.Count ‘ Lk = 2

  20. Wypełnianie tablicy wartościami z zaznaczonych komórek arkusza 20/20 SubWypelnij() DimTabStr() As String IfTypeName(Selection) = "Range" Then k = 1 For Eachobszar InSelection.Areas PwOb = obszar.Row PkOb = obszar.Column iW = obszar.Rows.Count iK = obszar.Columns.Count rozmiar = k - 1 + iW * iK ReDimPreserveTabStr(rozmiar) For i = PwOb To PwOb + iW - 1 For j = PkObToPkOb + iK - 1 TabStr(k) = Cells(i, j).Value k = k + 1 Nextj Next i Nextobszar EndIf EndSub b1 a1 a2 b2 b4 c4 d4 a6 d6 b7 d7 d8

More Related