Objektorienterad VBA programmering i Excel (OOP och VB6) - gratis mall, tips, regler och instruktioner
I den här arbetsboken har vi använt oss av konceptet för objektorienterad programmering (OOP) när vi har skrivit VBA kod för att kunna utföra operationen i arbetsboken.
I den här arbetsboken har vi skapat en egen meny som kan hittas under menyfliken "Tillägg" eller i menyn "Verktyg beroende på vilken version av Excel som används och ett formulär med kod som hanterar händelsen att en knapp trycks ned. I den här arbetsboken finns det kod i formuläret, i "ThisWorkbook", i en modul och i tre klassmoduler. För att kunna se VBA koden måste du aktivera tillägget "AnalysisToolpack – VBA" och eventuellt också aktivera menyfliken "Utvecklare".
Den huvudsakliga idén med objektorienterad programmering (OOP) är att skapa oberoende klasser för de objekt som skall kunna användas i ett program och att göra det enkelt för någon som inte har skapat en klass att använda en klass. En klass skall fungera som en svart låda där användaren av klassen inte behöver se koden i klassen utan endast behöver känna till de publika egenskaper och metoder som finns i klassen.
En klass består av variabler som normalt deklareras som privata (private), publika egenskaper (properties) som kan användas för att sätta och returnera värden för privata variabler, metoder som kan användas för att sätta och returnera värden, konstruktorer och en destruktor. I ett programmeringsspråk som är fullständigt objektorienterat kan en klass ärva (Inherit) från en annan klass, implementera ett gränssnitt från flera andra klasser (Implement interface) och ha flera konstruktorer som kan ta emot parametrar.
I VBA (VB 6) kan en Klassmodul inte ärva från en annan klass, inte implementera gränssnitt och enbart ha en konstruktor (Class_Initialize) som inte kan ta emot parametrar. En konstruktor behöver inte anges i en Klassmodul men kan användas för att exempelvis sätta standardvärden på privata variabler. En destruktor (Class_Terminate) behöver inte heller anges i en Klassmodul men kan användas för att frigöra resurser från minnet då det finns risk för minnesläckage på grund av att Klassmodulen innehåller resurser som finns utanför Excel och VBA.
I VBA (VB 6) sköts minneshanteringen genom referensräkning på så sätt att ett objekt förstörs (Class_Terminate) när antalet referenser för objektet har nått 0 och detta inträffar när den metod som har skapat ett objekt (Class_Initialize) har avslutats eller då värdet för objektet har satts till "Nothing". Det finns normalt ingen anledning att lägga till en destruktor (Class_Terminate) i en Klassmodul då minneshanteringen för resurser i VB6 och Excel normalt sköts automatiskt. Dålig kod kan orsaka "Out of Memory Exeptions" men då är lösningen att skriva om den dåliga koden. Om din dator har lite minne kan det finnas ett behov av att tidigt förstöra objekt och om din Klassmodul innehåller resurser utanför VBA och Excel finns det ett behov av att frigöra dessa resurser så att inte minnesläckage uppstår.
När vi skapar en klass (Klassmodul) deklarerar vi normalt alla variabler som privata (private) så att endast egenskaper och metoder inom klassen kan sätta och hämta värden avseende dessa variabler. I en klass (Klassmodul) anger vi publika egenskaper (properties) som kan anropas utanför klassen för att sätta och hämta värden avseende de privata variablerna när vi inte behöver utföra omfattande operationer. I en klass (Klassmodul) anger vi publika metoder (Sub and Function) som kan anropas utanför klassen för att sätta och hämta värden avseende privata variabler när mer omfattande dataoperationer krävs. Metoder kan vara subrutiner (Sub) eller funktioner (Function) där subrutiner inte har till syfte att returnera värden medan funktioner syftar till att returnera värden.
När vi vill använda de egenskaper och metoder som finns i en klass (Klassmodul) måste vi skapa en ny instans av en klass och det gör vi med hjälp av nyckelordet "New" som kör " Class_Initialize" och allokerar objektet i minnet.
Etiketter för denna mall: » excel » programmering
Utvalda mallar
Gåvobrev (110 897)Arvskifte (87 850)
Testamente (49 272)
Bouppteckning (35 357)
Samboavtal (34 332)
Äktenskapsförord (22 899)
Anställningsavtal (21 196)