!"#!"# $&'( # $ "&"' ( )* =NUTIDSVÆRDI(B8;B12:K12)-B4 ")&# + "&"' +,! ")& - )'.** / 0, )'.** 1 2 "&"' +,! 3 *4 64
" *7)*7 '7 )87 )'.**!"# 9 )( )"* $ 3 (!" 3 :: 3 :"*;8: 3 Range( A1:A10 ).Cells(3) <#6 Range( A1:C10 ).Cells(3,2) <"6
) 3 ; 12 ) = > : : = 1 2 ( > Range( A1:G10 ).Cells(3,).Value Cells(3,) 3Range( A1:G10 ) 6 6 3!"# - #)"* #)")? ;4' 3 #))? Range( A1:C3 ) #" ; 1!"#2 Range( A1:D1 ).Font.Bold = True.-);).
&" @'(')*' + Range( D4:F ).Name = Salgstal 1 2 3 Range( C2:D ).NumberFormat = #.##0,00,* 3 3 -.-A " / 9 9 0 3 1 2!3 ;6)? 6B)? Range( C3:D10 ).Copy Range( F3:G10 ).PasteSpecial Paste:=xlPasteValues!3! >! $
> 3 +,-#.#-#.# / +!"# + 3 + Range( A1 ) Range( A1:B10 ) Range( Salgstal ) 4 SalgsNavn 3 SalgsNavn = Range( Salgstal ).Name - Range(SalgsNavn)" ::SalgsNavn 6-3! Dim SalgsRange As Range Set SalgsRange = Range( Salgstal ) SalgsRange.Font = 121" 2,*,* Range( A ).Offset(2,3) 3 #4 $
* 6 C D 3:: 3: : 3: : 3 : :? Range( A ).Offset(0,3) 4 * ( Range(Range( C1 ),Range( D10 )) ;))? 4 ( With Range( A1 ) Range(.Offset(1,1),.Offset(3,3)).Select "*&#)) ) "* A 6 6 #) &".Offset(1,1) Range( A1 ).Offset(1,1)34 (., #)>)?? $ #) 3 3 :!"#E: 3 '1- '8'9( '9)*3 With Range( A1 ) Range(.Cells(1,1),.End(xlDown).End(xlToRight)).Select F.,F $7
"(,&,0*1"# / # 3 +!"G A 1-2 ' - @!"# $:
/ 3 0 3 H /#' MsgBox Range( A2:A19 ).Address " Sub Range1() MsgBox Range("A1").Address MsgBox Range("B1:F1").Address MsgBox Range("A2:A19").Address MsgBox Range("B2:F19").Address ' Følgende linier er ens, fordi.value egenskaben er default egenskaben ' for Range objektet. MsgBox "Den første værdi for den første ansat er " & Range("B2").Value MsgBox "Den første værdi for den første ansat er " & Range("B2"),& + 34 +1 Sub Range2() ' Denne sub opretter range navne for forskellige ranges, igen under antagelse ' af at placeringen og størrelsen af data ranget ikke ændres. Range("B1:F1").Name = "TestNavne" Range("A2:A19").Name = "Medarb_Nr" Range("B2:F19").Name = "Data" MsgBox "Navne er nu oprettet.", vbinformation ' Slet disse navne igen. ActiveWorkbook.Names("TestNavne ").Delete ActiveWorkbook.Names("Medarb_Nr ").Delete ActiveWorkbook.Names("Data").Delete MsgBox "Navne er nu slettet.", vbinformation ' Eller gør det ved at anvende følgende tilgang. Dim nm As Object For Each nm In ActiveWorkbook.Names nm.delete Next H. $;
3( F! 3( 3 4 +1 2( #. E> D!"#E" " " 9 3 Sub Range3() ' Hvis et range har et rangenavn, kan jeg referere til det ved dets navn. Range("B2:F19").Name = "Data" Range("Data").Font.Bold = True ' Slå nu fed skrift fra igen, og slet navnet. Range("Data").Font.Bold = False ActiveWorkbook.Names("Data").Delete " Range("Data").Font.Bold # + #*&( $ - 612 -+ 3 Sub Range4() Dim RName As String RName = Data ' Hvis et range har et range navn, kan jeg referere til det ved dets navn. Range("B2:F19").Name = RName Range(RName).Font.Bold = True ' Slå nu fed skrift fra igen, og slet navnet. Range(RName).Font.Bold = False ActiveWorkbook.Names(RName).Delete $
. -+ B -+ 3 "(,&,03&&"*,&.*( #4 $ G.. Sub Range() ' En anden måde at referere til et range på Range("B2:F19").Name = "Data" ' Følgende viser adressen på cellen i 2. række og 3. kolonne i ' Data ranget. (= celle D3.) MsgBox Range("Data").Cells(2, 3).Address ' Følgende viser hvordan vi specificerer et ved at anvende ' Range(TopLeft,BottomRight) syntaksen ' hvor TopLeft refererer til øverste venstre celle, og BottomRight til ' den nederste højre celle in ranget. Her er det cellerne C3, E4 MsgBox Range(Range("Data").Cells(2, 2), Range("Data").Cells(3, 4)).Address ' Dette kan gøres nemmere! ' bruger i stedet en With blok. With Range("Data") MsgBox Range(.Cells(2, 2),.Cells(3, 4)).Address ' Et alternativ er at anvende Set på en range variabel Dim SRange As Range Set SRange = Range("Data") With SRange MsgBox Range(.Cells(2, 2),.Cells(3, 4)).Address ' Det sidste kan du godt tage til dig! - Sådan gør vi fremover! / &..."* $ 3E! + 9 Sub Range6() ' Denne sub viser hvordan man skal finde et range, hvis dette ændres fra gang til gang. ' Lad Range("A1") være ankercellen With Range("A1") Range(.Offset(0, 1),.End(xlToRight)).Name = "TestNavne" Range(.Offset(1, 0),.End(xlDown)).Name = "Medarb_Nr" Range(.Offset(1, 1),.End(xlDown).End(xlToRight)).Name = "Data" ' Alternativt, kunne vi finde antallet af kolonner i datasættet. Dim NScores As Integer, NEmployees As Integer With Range("A1") NScores = Range(.Offset(0, 1),.End(xlToRight)).Columns.Count $$
MsgBox "Der er " & NScores & " test værdier for hver medarb.", vbinformation, _ "Antal test værdier" NEmployees = Range(.Offset(1, 0),.End(xlDown)).Rows.Count MsgBox "Der er " & NEmployees & " medarbejdere i data sættet.", vbinformation, _ "Antal medarbejdere" ' Kun for at variere inkluder også række 1, kolonne A i ranget. Range(.Offset(0, 0),.Offset(NEmployees, NScores)).Name = "AllDataSet" MsgBox "Hele Datasættet er i ranget " & Range("AllDataSet").Address, _ vbinformation, "Datasæt adresse" ' Slet alle range navnene. Dim nm As Object For Each nm In ActiveWorkbook.Names nm.delete Next 6.##&7"""& 13 # 2 +.Row(11))).Columns(4).EntireColumn & Sub Range7() ' Denne sub viser hvordan man vælger en række eller en kolonne. With Range("A1:F19").Rows(12).Select MsgBox "12. række af ranget er valgt.".rows(12).entirerow.select MsgBox "Hele rækken er nu valgt.".columns(4).select MsgBox "4. kolonne af ranget er valgt.".columns(4).entirecolumn.select MsgBox "Hele kolonnen er nu valgt." Rows("4:").Select MsgBox "Alternativ måde at vælge rækker på." Columns("D:E").Select MsgBox "Ditto kolonner." 2( #.-&#!"# $ 1' 2 I > @ $
3J <' 9 E > 9 $ Sub Range8() ' Her er nogle almindelige måder at formatere data på. With Range("A1") Range(.Offset(0, 1),.End(xlToRight)).Name = "TestNavne" Range(.Offset(1, 0),.End(xlDown)).Name = "Medarb_Nr" Range(.Offset(1, 1),.End(xlDown).End(xlToRight)).Name = "Data" ' Formatter nu. With Range("TestNavne").HorizontalAlignment = xlright With.Font.Bold = True.ColorIndex = 3 ' 3 er rød..size = 16.EntireColumn.AutoFit With Range("Medarb_Nr").Font.Italic = True.ColorIndex = ' is blå..size = 12 With Range("Data").Interior.ColorIndex = 1 ' 1 er lysegrå..font.name = "Times Roman".NumberFormat = "0,0" MsgBox "Nu er formatering gjort" ' Gendan det hele Range("testNavne").Style = "Normal" Range("Medarb_Nr").Style = "Normal" Range("Data").Style = "Normal" MsgBox "Gendan udført" ' Anvend autoformat. With Range("A1") Range(.Offset(0, 0),.End(xlDown).End(xlToRight)) _.AutoFormat xlrangeautoformatclassic3 MsgBox "Classic 3 autoformatering udført." ' Gendan. Range("A1").Style = "Normal" Range("Testnavne").Style = "Normal" Range("Medarb_Nr").Style = "Normal" Range("Data").Style = "Normal" MsgBox "Gendan udført" #..(& +!"# $
9! =Middel( Test_1 )!"#FE 9 +9 F! @K)!"# =Average(Test_1) @K) 9 -);) : : =SUM(RC[- 2]:RC[-1]) -LM3 9LM;G 3 9*9) B D 123 3 :: ) )*6,!" 3 ' Sub Range9() ' Denne sub viser hvordan man skriver formler i celler, ' både ved at anvende Formula og FormulaR1C1 egenskaben. ' Begge tager en streng som argument, som skal begynde med = Dim NScores As Integer, NEmployees As Integer, i As Integer ' Bestem antallet af kolonner og antallet af ansatte. ' Sæt navnet på testene til Test1, Test2 osv. With Range("A1") NScores = Range(.Offset(0, 1),.End(xlToRight)).Columns.Count NEmployees = Range(.Offset(1, 0),.End(xlDown)).Rows.Count For i = 1 To NScores Range(.Offset(1, i),.offset(1, i).end(xldown)).name = "Test" & i Next ' For hver kolonne indtast gennemsnitsformlen lige under den sidste værdi ' Bemærk i øvrigt, hvorledes string concatenation anvendes her. ' f.eks. vil strengen til højre blive "=Average(Test1)". For i = 1 To NScores Range("A1").Offset(NEmployees + 1, i).formula = "=Average(Test" & i & ")" Next ' Prøv det samme med FormulaR1C1 egenskaben til at finde gns. værdien for hver medarb. ' Bemærk, hvordan hver celle i kolonnen af gennemsnit har samme formel i R1C1 ' notation. Det er gennemsnittet af ranget fra NScores celler til venstre til 1 $
' celle til venstre. For eksempel, hvis NScores er 4, medfører det at der står RC[-4]:RC[-1]. With Range("A1").Offset(0, NScores + 1) Range(.Offset(1, 0),.Offset(NEmployees, 0)).FormulaR1C1 = _ "=Average(RC[-" & NScores & "]:RC[-1])".##& *1"! 8 Sub Range10() ' Her er nogle brugbare range egenskaber. CurrentRegion og UsedRange egenskaberne ' er rektangulære ranges. Det første range "indhyller" et givet range. Den anden ' er en egenskab for et regneark. Den returnerer det mindste rektangulære range ' som indeholder alle ikke tomme celler. MsgBox "Ranget som holder datasættet er " & Range("A1").CurrentRegion.Address, _ vbinformation, "Nuværende (Current) range" MsgBox "Ranget som holder alt er " & ActiveSheet.UsedRange.Address, _ vbinformation, "brugt (Used) range" ' Det er nogle gange anvendeligt at tage foreningsmængden (union) af flere range, ' som ikke nødvendigvis er kontinuerte. Dim URange As Range Set URange = Union(Range("A1").CurrentRegion, Range("A21"), Range("H1")) With URange.Name = "UnionOfRanges" MsgBox "Adressen af denne union er " &.Address, vbinformation, _ "Adresse af denne union" ' Areas egenskaben returnerer delelementerne i denne foreningsmængde. MsgBox "Foreningsmængden er sammensat af " &.Areas.Count & " dele.", _ vbinformation, "antal delelementer" I 6,(&# 9 J 3 3!"#
+,= ) N>!"# )) ) )&3 )* 6 )6 A )& A )4 $ :B: #** )8 $ "** ;**** * B > > * *) #!"# #)@ 6D> > + >! ** O ) 6 B ) > > 6 6) $ @;D;>#+-! ;::G * 6* O )
& B 3 9 &), &* @3 9 E &6 @9 E 4!"# 4) #)#)? 4* ; *& )? #)P4?? 46 ; *& )? 4& ; *& )? ::G - 44 & 48 > J 4C 3#6 4' ; & 8 8 $ K8 )? )* "&>)6!"# )* -);) ::G )* C B 9 + -);) 7
3 1 # 3 -);) 2 ' -);) 1$ +& # )&2 H $!"# 6 )? B " )?) )& )?* :