!"#!"# "# %&') * #" % && %' Dim MyArray2) As Integer ) * %' +,! - Myarray MyArray0). %' /0 /0 122 + /0 /0 +4
/ 0) Dim MyArray1 to 2) As Integer 5MyarrayMyArray1)" +6 Option Base 1 Option Explicit %' 76 Dim MyArray2) * 8 Sub Array1) Dim i As Integer Dim StrArray) As String Dim Saetning As String End Sub StrArray0) = "Leif " StrArray1) = "den " StrArray2) = "lalle" StrArray) = "glade" For i = 0 To Saetning = Saetning & StrArrayi) Debug.Print Saetning i StrArray) 9 +- Saetning = Saetning + StrArrayi) 5 StrArray) * -
:StrArray) = glade ) : % *#"%# "#% %' Dim dynarray) As Integer ; antal = InputBox Hvor mange elementer har du brug for? ) Redim dynarrayantal) 7+ 7+ 7+++ 7+++ : 5 7<=>?#A6 # >** =>*< :
antal = antal + 1 Redim Preserve dynarrayantal) +!&# #* #& A 6 Dim MyArray2, 10) As String 5 *B>7+). " Public Sub Array4) Dim i As Integer, j As Integer Dim Matrix) As Integer i = 0 j = 0 End Sub ReDim Matrix1, 1) Matrixi, j) = 1 Debug.Print "i er: "; i; " j er: "; j; " Vaerdi i matrix er: "; Matrixi, j) 'Gaar det her? dvs. er Option Base sat til 1? Matrix0, 1) = 1 Debug.Print Matrix0, 1) Matrix1, 1) = 1 Debug.Print Matrix1, 1) ReDim Matrix2, 2) Matrix2, 2) = 1 Debug.Print Matrix2, 2) " ; 6 >C* Public Sub array6) Dim inti As Integer Dim arr, 4, 5, 6, 7, 8, 9, 5,, 2) As Integer
arr1, 1, 1, 1, 1, 1, 1, 1, 1, 1) = 1!, -B9B<BDBEBFBGB<B- B*H<99-*++ H* 7+FFD9++, 5 6 6 "*,&,- I.#,# "# %'?# 7+++ 5 5 J "! ' I!&& 5: 6 "
Option Explicit Option Base 1 Sub FindPris) Dim ProdKode) As String, EnhPris) As Currency, i As Integer, Found As Boolean, _ Kode As String, KodePris As Currency, NProdukter As Integer ' Find antallet af produkter og redim de enkelte arrays. ' fyld dem herefter med data With Range"A") NProdukter = Range.Offset1, 0),.EndxlDown)).Rows.Count ReDim ProdKodeNProdukter) ReDim EnhPrisNProdukter) For i = 1 To NProdukter ProdKodei) =.Offseti, 0) EnhPrisi) =.Offseti, 1) End With ' Faa nu koden. Kode = InputBox"Indtast en produktkode Stort bogstav efterfulgt af fire cifre. ") ' Find koden, og registrer prisen Found = False For i = 1 To NProdukter If ProdKodei) = Kode Then Found = True KodePris = EnhPrisi) Exit For End If ' Vis nu nogle meddelelser. If Found Then MsgBox "Enhedsprisen for produktet " & Kode & " er " & _ FormatKodePris, "0.00"), vbinformation, "Produktet er fundet" Else MsgBox "Produktkoden " & Kode & " findes ikke i listen.", vbinformation, _ "Produktet er ikke fundet" End If End Sub %"/&%,!" K %' > =! && ProduktKodeArr ProduktKodeArr "
ProduktKodeFundet ProduktKodeFundet 5 7 5 ProduktKodeFundet J I ". Option Explicit Option Base 1 Sub ProdSalg) Dim ASalg As Integer, ProduktKodeArr) As Integer, ProduktKodeFundet) As Integer, _ Antal) As Integer, KroneData) As Single, KronerTotalt) As Single, _ i As Integer, j As Integer, NytProdukt As Boolean, AFundet As Integer ' Fjern gamle resultater fra kolonnerne E to G. With Range"E2") Range.Offset1, 0),.Offset0, 2).EndxlDown)).ClearContents End With ' Find antallet af transaktioner i data sættet, redimensioner ProduktKodeArr og ' KroneData array'ene, og indskriv dataene fra kolonnerne A and C. With Range"A2") ASalg = Range.Offset1, 0),.EndxlDown)).Rows.Count ReDim ProduktKodeArrASalg) ReDim KroneDataASalg) For i = 1 To ASalg ProduktKodeArri) =.Offseti, 0) KroneDatai) =.Offseti, 2) End With ' Initialisering. AFundet = 0 ' Loop igennem alle transaktioner. For i = 1 To ASalg ' Sæt den Boolske NytProdukt to True, og ændre den til False hvis ' nuværende produkt kode allerede findes. NytProdukt = True If AFundet > 0 Then ' Loop igennem alle "kendte" produkt koder og sammenlign med den nuværende For j = 1 To AFundet If ProduktKodeArri) = ProduktKodeFundetj) Then ' Den nuværende er ikke ny så opdater Antal og ' KronerTotalt værdierne. NytProdukt = False Antalj) = Antalj) + 1 KronerTotaltj) = KronerTotaltj) + KroneDatai) Exit For End If End If If NytProdukt Then
' Den nuværende er ny så opdater listen af koder som kendes indtil videre ' og initialiser Antal and KronerTotalt værdierne dette nye produkt. AFundet = AFundet + 1 ReDim Preserve ProduktKodeFundetAFundet) ReDim Preserve AntalAFundet) ReDim Preserve KronerTotaltAFundet) ProduktKodeFundetAFundet) = ProduktKodeArri) AntalAFundet) = 1 KronerTotaltAFundet) = KroneDatai) End If ' Placer resultatet i kolonnerne E til G. For j = 1 To AFundet With Range"E2").Offsetj, 0) = ProduktKodeFundetj).Offsetj, 1) = Antalj).Offsetj, 2) = KronerTotaltj) End With ' Sorter kolonnerne efter kolonne G in faldende orden, og vis en besked omkring antallet af produkter ' som er fundet. Range"E").Sort Key1:=Range"G"), Order1:=xlDescending, Header:=xlYes MsgBox "Der er p.t. " & AFundet & " forskellige produkter som har været solgt." End Sub 4 8 JProduktKodeArrKroneData A ProduktKodeFundet Antal KronerTotalt IAFundetAProduktKodeFundet Antal KronerTotalt " : J&& A AFundet 8 >7 ) 0&%1!##" L?L?" A?? #
&& >7 #7< : 8! I 7<6 7+7* 7*7+ Option Explicit Option Base 1 ' Denne sub indskriver tilfældige heltal fra 1 til 100 over ' diagonalen og derefter under diagonale for at opnå symmetri. Sub LavAfstande) Dim i As Integer, j As Integer, NCities As Integer ' Følgende udtryk sikrer at vi får forskellige tal ' hver gang rutinen kaldes. Randomize With Range"afstMatrix") NCities =.Rows.Count For i = 1 To NCities - 1 ' Rnd er en indbygget VBA funktion, som generere tilfældige tal imellem ' 0 og 1. Int er en anden VBA funktion som "sakser" decimal delen og ' returnerer heltalsdelen. For j = i + 1 To NCities.Cellsi, j) = IntRnd * 100) + 1
For i = 2 To NCities For j = 1 To i - 1.Cellsi, j) =.Cellsj, i) End With End Sub ' %'J + 7 77< 7<&&%&' +79,: 7 ) # '7-?*E I I = = ' Denne sub udfører nearest neighbor heuristikken. Sub NearestNeighbor) ' Definition af variable: ' NCities - Antallet af byer i problemet ' Visited - Et Boolsk array: True hvis en by har været besøgt, False ellers ' Step - En tæller for antallet af byer besøgt indtil videre ' Route - Et array hvor element i er den i'te by besøgt ' Note: Route1) og RouteNCities+1) er selvfølgelig begge 1. ' NowAt - nuværende by ' At - by som skal besøges næste gang ' TotDist - totale afstand rejst ' ' MinDist - minimum afstand til den nærmeste ikke besøgt) nabo i - loop variabel Dim NCities As Integer, Visited) As Boolean, Step As Integer, _ Route) As Integer, NowAt As Integer, At As Integer, _ TotDist As Integer, MinDist As Integer, i As Integer ' Find størrelsen af problemet antallet af noder) og redimensioner Visited ' og Route arrayene. NCities = Range"afstMatrix").Rows.Count ReDim VisitedNCities) ReDim RouteNCities + 1) ' Initialiser variablene. Route1) = 1 RouteNCities + 1) = 1 Visited1) = True For i = 2 To NCities Visitedi) = False
NowAt = 1 TotDist = 0 ' For hvert step undersøg hvilken by der skal besøges i hvilken orden For Step = 2 To NCities ' Find hvilken by, der skal besøges næste gang ved at finde 'minimum' afstandene ' fra den nuværende by til alle andre byer. Den næste by er kun kandidat ' hvis den ikke er den nuværende by og hvis den ikke er besøgt i forvejen. ' Start med at sætte den temporære minimum MinDist) til en HØJ værdi. MinDist = 10000 For i = 2 To NCities If i <> NowAt And Visitedi) = False Then If Range"afstMatrix").CellsNowAt, i) < MinDist Then ' "Fang" den bedste kandidat indtil videre og dens afstand fra den nuværende by. At = i MinDist = Range"DistMatrix").CellsNowAt, At) End If End If i ' Gem byen og gå videre til den næste i Route, opdater Visited, opdater den totale ' afstand. RouteStep) = At VisitedAt) = True TotDist = TotDist + MinDist ' Forbered næste gennemløb. NowAt = At Step ' Opdater den totale afstand så returnering til by 1 indgår TotDist = TotDist + Range"afstMatrix").CellsNowAt, 1) ' Skriv ruten til regnearket, begyndende i celle B0. For Step = 1 To NCities + 1 Range"B0").OffsetStep, 0) = RouteStep) Step ' Vi den totale afstand i en beskedboks. MsgBox "Den totale afstand er " & TotDist, vbinformation, "Totale rejselængde" End Sub I 7 Visited Route5Visited6) = True D Route J5 Route7) = 4 E9 5! && > At " NowAt At
" NowAt7 " '-+?, 2,%/ 7 77++ > 77++ 27 7GG " 7&& :M * # 7 : A*9A #N8 O 7E>5, A : - # 1 6 6 " 5 %' 61"6 P# 9? # ) #)%'>=B>) #:)272
)) #)? ) # ) % % >7 % >* " A % " ' < K48# *+++*++7 *+++ *++7 *+++ *++7" " D K# -<++6 " " E 5 O8 && "&& ; )17# 7D? 1 > ) ) &A:: & 7D' : ::K*
&& && 1 61 F &A66 & 1 1J = & 66 & )1*# 4 1 : & 66 & A1? A1! 1> 1 " 1 : G >I <+&>5 <&F&7*&7<&*+&*<&? Q A<&AF& 7*&9G& && 8 I&& )#>