Excel VSTO

Det har naturligvis været rigtig godt, at kunne gennemgå kursus i sit eget tempo, hvilket har betydet meget for mig, da jeg så har kunne få det daglige arbejde til at passe ind.

I modsætning til en traditionel undervisningsform, hvor kurset er berammet til en fast tid og man derfor bliver nødt til, at sætte en tidsgrænse for de praktiske opgaver, har jeg kunne nørde lige så længe jeg vil, og dermed afprøve nogle flere teknikker, end der normalt er tid til.

Ved at køre kurset over flere uger, har jeg også haft tid til, at lade de nye informationer bundfælde og sætte sig bedre fast.

En rigtigt god ting har været, at jeg har kørt hele kurset på min egen (firmaet) maskine, med min egen opsætning. Har alt for ofte været på kurser ude af huset, på andre maskiner og når man så kom tilbage til ens egen pc, var det en anden opsætning, en anden version, eller andet der gjorde, at man ikke lige kunne komme igang med det man havde lært.

Jeg har kunne bruge mine hverdagsopgaver som opgaverne i kurset, hvilket jeg syntes er bedere end de normale "Hello World" opgaver.

Og så er jeg meget imponeret over den hurtige response der har været på indsendte opgaver og spørgsmål. Dejligt at jeg ikke skulle vente dage med, at kunne komme videre, men ofte i løbet af minutter eller timer.

Jan Amdi Letvad, PFA Pension

Excel VBA

At jeg kan fordybe når jeg har tid og lyst, er super.

Virkelig hurtig respons fra underviseren - næsten døgnet rundt :)

Øvelserne indeholdt hvad jeg skulle bruge, for at komme videre med egne vba-projekter.

At man kunne sammenligne egne løsninger med underviserens var lærerigt.

Henrik Boss, Marel Bornholm

Word VBA

Jeg er total overrasket over den korte svartid. Det er et KÆMPE plus hvis man selv til tider arbejder under tidspres og ved man kun har en kort tid at arbejde på en opgave.

Der er heller aldrig slinger i valsen på spørgsmål; altid kort og præcis svar retur. 

At kunne lave opgaverne når det passede mig var helt fantastisk. 

Tina Eriksen, Skandinavisk Service Partner

Excel VBA

Jeg har gennemført kurset Excel VBA. Jeg var skeptisk overfor måden at lære på inden jeg gik i gang, men jeg må sige at min skepsis blev gjort til skamme. Lige fra første lektion følte jeg at jeg virkelig lærte noget.

Thors tilgang til materialet er perfekt. Gennem løbende øvelser får man lejlighed til at afprøve teorien i praksis.

Beder man om lidt hjælp, så kommer den lynhurtig – men det er kun et hint og så kan man selv finde ud af resten – det er perfekt for herved tvinges eleven til at tænke sig om – mon det kan bruges i folkeskolen også :).

Kurset er ALLE pengene værd og kan køres når man har tid og er motiveret. Holder man for lange pauser i undervisningen, så komme Thors pegefinger i form af en mail og så er det bare om at komme i gang igen :)

Jacob Madsen, Mettler-Toledo A/S

Excel VBA

Kurset er godt, fordi det tvinger kursisten til at arbejde selvstændigt. Det er lidt lig forelæsning, hvor det er fuldstændigt op til een selv at arbejde med stoffet.
Thor Østergaards pædagogik er baseret på "hjælp til selvhjælp", og alt er holdt i en let og uhøjtidelig tone.

Fjernundervisning har yderligere den fordel at man kan sidde hjemme og koncentrere sig om emnet, uden at blive forstyrret af andre (ofte mindre motiverede) kursister.

Flemming Degn, Privat

Excel VBA

Hurtige tilbagemeldinger på spørgsmål og øvelser. God opbygning af kurset

Sune Jeppson, Arbejdernes Landsbank

< >
Se flere referencer

Introduktion til C#

Som sagt er dette ikke et kursus i C#, men lad os alligevel se på de mest almindelige konstruktioner.

Nedenstående er mest tænkt som et opslagsværk, som du kan vende tilbage til, hvis du skulle blive i tvivl om ét eller andet.

Procedure

En procedure i C# ser sådan her ud:

private void HelloWorld()
{
  Excel.Worksheet wks = 
        (Excel.Worksheet)Globals.ThisWorkbook.ActiveSheet;
  wks.Range["A1"].Value = "Hello World";
}

Inden vi går videre skal vi lige se på ovenstående. Bemærk følgende

  1. Alle linjer slutter med ; (det er vigtigt)
  2. Vi bruger {} til at markere, hvad der hænger sammen.
  3. Vi bruger [] når vi har fat i et indeks (i VBA bruger man () både i forbindelse med indeks og funktionskald, men i C# er de to typer adskilt)
  4. void angiver at der ikke er nogen returværdi fra proceduren
  5. private angiver at den kun kan bruges lokalt. Man kan også skrive public, hvis det skal bruges flere steder.
  6. Man kan lave linjeskift (næsten) som man har lyst - det er ; der markerer at linjen er slut.
  7. (Excel.Worksheet) er det vi kalder en typecast, det markerer at det efterfølgende skal konverteres til typen Excel.Worksheet).

 Funktion

Og en funktion:

private string ToGangeTekst(string indTekst)
{
  return indTekst + " " + indTekst;
}

 Og et eksempel på, hvordan man kan kalde sådan en funktion.

wks.Range["A1"].Value = ToGangeTekst("Hello World");

 Bemærk følgende:

  1. En funktion er magen til en procedure - bortset fra at vi skriver den datatype, der skal returneres i stedet for void og med return angiver, hvad der skal sendes retur
  2. Tekster sættes sammen med + (i modsætning til &, som du måske kender fra VBA).
  3. Man skriver altid datatype før variabel.

 Variable

Som nævnt ovenfor skriver man altid datatype før variabelnavn, så deklaration af variable ser sådan her ud:

string enTekst = "Hello World";
int etHeltal;
bool SandFalsk = true;
Excel.Worksheet wks =
(Excel.Worksheet)Globals.ThisWorkbook.ActiveSheet;

 Bemærk:

  1. Man kan deklarere en variabel og give den indhold med det samme (det er dejligt)
  2. Man behøver ikke "Set" når man deklarerer et objekt (som man skal i VBA)

Betingelser

int etHeltal = 4;
if (etHeltal == 3)
{
  wks.Range["A1"].Value = "JA - tallet er 3";
}
else
{
  wks.Range["A1"].Value = "Nej - tallet er ikke 3";
}

Bemærk:

  1. Der skal være paranteser omkring betingelsen
  2. Vi bruger == når vi skal sammenligne og != når vi gerne vil teste for om ting er forskellige (! betyder NOT i C#)
  3. Igen bruger vi {} til at markere, hvad der hænger sammen (i ovenstående ekstempel er de faktisk ikke nødvendige, da der kun er én linje i hver blok, men det er god stil at sætte dem på alligevel).

Vi har også And og Or i C#, her er det er bare & og |  - og sætter man to efter hinanden bliver de efterfølgende ting kun evalueret, hvis det er nødvendigt - så vi skriver næsten altid && og ||.

Man kan naturligvis også:

switch (etHeltal)
{ 
  case 0:
    wks.Range["A1"].Value = "JA - tallet er 0";
    break;
  case 1:  case 2:  case 3:  case 4:  case 5:
    wks.Range["A1"].Value = "Tallet er mellem 1 og 5";
    break;
  case 6:
    wks.Range["A1"].Value = "Tallet er 6";
    break;
  default:
    wks.Range["A1"].Value = "Jeg kender ikke tallet";
    break;
}

Svarende til Select Case fra VB. 

Løkker

for (int i = 1; i <= 10; i++)
{
   wks.Range["B" + i.ToString()].Value = i;
 }

Bemærk:

  1. Første parameter angiver startværdien (og man skal angive datatypen her)
  2. Næste parameter angiver, hvor der skal sluttes (man kan godt f.eks. have et funktionskald her, hvis man skulle have lyst til det)
  3. Og til slut - hvordan der skal tælles op. i++ er det samme som i = i + 1 (det er smart)

Vi tager lige én mere:

int i = 1;
foreach (Excel.Worksheet loopwks in Globals.ThisWorkbook.Worksheets)
{
  wks.Range["C" + i.ToString()].Value = loopwks.Name;
  i++;
}

 

Simpel dialog

System.Windows.Forms.MessageBox.Show("Hej med dig","Overskift");

 Og skriver man 

using System.Windows.Forms;

I toppen af koden kan man nøjes med at skrive

MessageBox.Show("Hej med dig","Overskift");

Og vil man have svar retur kan man skrive:

DialogResult svar;
svar = MessageBox.Show("Hej med dig. Går det det godt?", "Overskift",
      MessageBoxButtons.YesNo);
if (svar == DialogResult.Yes)
{
  MessageBox.Show("SUPER!");
}
else
{
   MessageBox.Show("ØV");
}

Der er desværre ingen InputBox i C#, så du må klare dig med dialoger/forms, som er det næste vi skal kigge på.

Kommentarer

I C# kan man lave kommenterer på to måder:

// Dette er en kommentar, der kun fylder en enkelt linje
/* Og en der fylder flere linjer
* en linje mere (* i starten er ikke nødvendig - bare god stil)
* Og endnu en
* Og slut */

 

Når du har betalt for kurset får du adgang til øvelser til hver lektion. Og når du har fået godkendt din besvarelse får du desuden adgang til mine løsningsforslag med ekstra tips og trix.