Bigelk Skrevet 20. februar 2012 Del Skrevet 20. februar 2012 Hei. Jeg har en kolonne som jeg skal telle, Den skal starte og telle i B3 og telle til en viss tekst dukker opp. f.eks "OSLO" jeg må også vite hvilken range "OSLO" står i. Etter den har gjort det skal den hoppe 2 rader ned, telle i fra den rangen til den finner "Akershus" trenger da også å vite hvilken range "Akershus" står i. Noen som har noen gode forslag? Hilsen Torbjørn Lenke til kommentar
Bigelk Skrevet 20. februar 2012 Forfatter Del Skrevet 20. februar 2012 Hei. Da har lagd en egen kode som får det til. Tviler på at den er optimal. Den teller egentlig ikke, jeg looper til jeg finner det kriterie jeg er ute etter å legger inn formler i arket ut i fra det. Dim xSpar As Variant Dim xMeny As Variant Dim xKiwii As Variant Dim xKiwio As Variant Dim xJoker As Variant Dim xUltra As Variant Dim xCentra As Variant Dim xRingen As Variant Dim xAssosierte As Variant Dim x7Assosierte As Variant Dim xtotal As Variant Range("b3").Select Dim Spar As Variant Spar = "3 SPAR-OSLO" Do ActiveCell.Offset(1, 0).Select Loop Until ActiveCell = Spar ActiveCell.Offset(0, 1).Select xSpar = "r" & ActiveCell.Row & "c" & ActiveCell.Column Range("b3").Select Do ActiveCell.Offset(1, 0).Select Loop Until ActiveCell = "5 MENY-OSLO" ActiveCell.Offset(0, 1).Select xMeny = "r" & ActiveCell.Row & "c" & ActiveCell.Column Range("b3").Select Do ActiveCell.Offset(1, 0).Select Loop Until ActiveCell = "6 KIWI Oslo Innland" ActiveCell.Offset(0, 1).Select xKiwii = "r" & ActiveCell.Row & "c" & ActiveCell.Column Range("b3").Select Do ActiveCell.Offset(1, 0).Select Loop Until ActiveCell = "2 KIWI Oslo Oslofjord" ActiveCell.Offset(0, 1).Select xKiwio = "r" & ActiveCell.Row & "c" & ActiveCell.Column Range("b3").Select Do ActiveCell.Offset(1, 0).Select Loop Until ActiveCell = "3 JOKER OSLO" ActiveCell.Offset(0, 1).Select xJoker = "r" & ActiveCell.Row & "c" & ActiveCell.Column Range("b3").Select Do ActiveCell.Offset(1, 0).Select Loop Until ActiveCell = "0 MATVAREHUSET ULTRA" ActiveCell.Offset(0, 1).Select xUltra = "r" & ActiveCell.Row & "c" & ActiveCell.Column Range("b3").Select Do ActiveCell.Offset(1, 0).Select Loop Until ActiveCell = "0 CENTRA SUPERMARKEDER" ActiveCell.Offset(0, 1).Select xCentra = "r" & ActiveCell.Row & "c" & ActiveCell.Column Range("b3").Select Do ActiveCell.Offset(1, 0).Select Loop Until ActiveCell = "0 Butikkringen - Oslo" ActiveCell.Offset(0, 1).Select xRingen = "r" & ActiveCell.Row & "c" & ActiveCell.Column Range("b3").Select Do ActiveCell.Offset(1, 0).Select Loop Until ActiveCell = "5 Joker Assosierte Oslo avd" ActiveCell.Offset(0, 1).Select xAssosierte = "r" & ActiveCell.Row & "c" & ActiveCell.Column Range("b3").Select Do ActiveCell.Offset(1, 0).Select Loop Until ActiveCell = "7 ASSOSIERTE-OSLO" ActiveCell.Offset(0, 1).Select x7Assosierte = "r" & ActiveCell.Row & "c" & ActiveCell.Column Range("b3").Select Do ActiveCell.Offset(1, 0).Select Loop Until ActiveCell = "BAMA DAGLIGVARE AS Avd. Oslo" ActiveCell.Offset(0, 1).Select xtotal = "r" & ActiveCell.Row & "c" & ActiveCell.Column 'spar loop Range("B3").Select Do ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,)),"""",VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,))" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-1]/" & xSpar & "*100),"""",RC[-1]/" & xSpar & "*100)" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-2]/" & xtotal & "*100),"""",RC[-2]/" & xtotal & "*100)" ActiveCell.Offset(0, -3).Select ActiveCell.Offset(1, 0).Select Loop Until ActiveCell = "3 SPAR-OSLO" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,)),"""",VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,))" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-1]/" & xSpar & "*100),"""",RC[-1]/" & xSpar & "*100)" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-2]/" & xtotal & "*100),"""",RC[-2]/" & xtotal & "*100)" ActiveCell.Offset(0, -3).Select ActiveCell.Offset(3, 0).Select 'Meny loop Do ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,)),"""",VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,))" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-1]/" & xMeny & "*100),"""",RC[-1]/" & xMeny & "*100)" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-2]/" & xtotal & "*100),"""",RC[-2]/" & xtotal & "*100)" ActiveCell.Offset(0, -3).Select ActiveCell.Offset(1, 0).Select Loop Until ActiveCell = "5 MENY-OSLO" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,)),"""",VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,))" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-1]/" & xMeny & "*100),"""",RC[-1]/" & xMeny & "*100)" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-2]/" & xtotal & "*100),"""",RC[-2]/" & xtotal & "*100)" ActiveCell.Offset(0, -3).Select ActiveCell.Offset(3, 0).Select Do ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,)),"""",VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,))" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-1]/" & xKiwii & "*100),"""",RC[-1]/" & xKiwii & "*100)" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-2]/" & xtotal & "*100),"""",RC[-2]/" & xtotal & "*100)" ActiveCell.Offset(0, -3).Select ActiveCell.Offset(1, 0).Select Loop Until ActiveCell = "6 KIWI Oslo Innland" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,)),"""",VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,))" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-1]/" & xKiwii & "*100),"""",RC[-1]/" & xKiwii & "*100)" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-2]/" & xtotal & "*100),"""",RC[-2]/" & xtotal & "*100)" ActiveCell.Offset(0, -3).Select ActiveCell.Offset(3, 0).Select Do ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,)),"""",VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,))" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-1]/" & xKiwio & "*100),"""",RC[-1]/" & xKiwio & "*100)" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-2]/" & xtotal & "*100),"""",RC[-2]/" & xtotal & "*100)" ActiveCell.Offset(0, -3).Select ActiveCell.Offset(1, 0).Select Loop Until ActiveCell = "2 KIWI Oslo Oslofjord" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,)),"""",VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,))" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-1]/" & xKiwio & "*100),"""",RC[-1]/" & xKiwio & "*100)" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-2]/" & xtotal & "*100),"""",RC[-2]/" & xtotal & "*100)" ActiveCell.Offset(0, -3).Select ActiveCell.Offset(3, 0).Select Do ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,)),"""",VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,))" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-1]/" & xJoker & "*100),"""",RC[-1]/" & xJoker & "*100)" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-2]/" & xtotal & "*100),"""",RC[-2]/" & xtotal & "*100)" ActiveCell.Offset(0, -3).Select ActiveCell.Offset(1, 0).Select Loop Until ActiveCell = "3 JOKER OSLO" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,)),"""",VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,))" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-1]/" & xJoker & "*100),"""",RC[-1]/" & xJoker & "*100)" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-2]/" & xtotal & "*100),"""",RC[-2]/" & xtotal & "*100)" ActiveCell.Offset(0, -3).Select ActiveCell.Offset(3, 0).Select Do ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,)),"""",VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,))" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-1]/" & xUltra & "*100),"""",RC[-1]/" & xUltra & "*100)" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-2]/" & xtotal & "*100),"""",RC[-2]/" & xtotal & "*100)" ActiveCell.Offset(0, -3).Select ActiveCell.Offset(1, 0).Select Loop Until ActiveCell = "0 MATVAREHUSET ULTRA" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,)),"""",VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,))" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-1]/" & xUltra & "*100),"""",RC[-1]/" & xUltra & "*100)" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-2]/" & xtotal & "*100),"""",RC[-2]/" & xtotal & "*100)" ActiveCell.Offset(0, -3).Select ActiveCell.Offset(3, 0).Select Do ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,)),"""",VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,))" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-1]/" & xCentra & "*100),"""",RC[-1]/" & xCentra & "*100)" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-2]/" & xtotal & "*100),"""",RC[-2]/" & xtotal & "*100)" ActiveCell.Offset(0, -3).Select ActiveCell.Offset(1, 0).Select Loop Until ActiveCell = "0 CENTRA SUPERMARKEDER" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,)),"""",VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,))" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-1]/" & xCentra & "*100),"""",RC[-1]/" & xCentra & "*100)" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-2]/" & xtotal & "*100),"""",RC[-2]/" & xtotal & "*100)" ActiveCell.Offset(0, -3).Select ActiveCell.Offset(3, 0).Select Do ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,)),"""",VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,))" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-1]/" & xRingen & "*100),"""",RC[-1]/" & xRingen & "*100)" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-2]/" & xtotal & "*100),"""",RC[-2]/" & xtotal & "*100)" ActiveCell.Offset(0, -3).Select ActiveCell.Offset(1, 0).Select Loop Until ActiveCell = "0 Butikkringen - Oslo" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,)),"""",VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,))" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-1]/" & xRingen & "*100),"""",RC[-1]/" & xRingen & "*100)" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-2]/" & xtotal & "*100),"""",RC[-2]/" & xtotal & "*100)" ActiveCell.Offset(0, -3).Select ActiveCell.Offset(3, 0).Select Do ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,)),"""",VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,))" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-1]/" & xAssosierte & "*100),"""",RC[-1]/" & xAssosierte & "*100)" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-2]/" & xtotal & "*100),"""",RC[-2]/" & xtotal & "*100)" ActiveCell.Offset(0, -3).Select ActiveCell.Offset(1, 0).Select Loop Until ActiveCell = "5 Joker Assosierte Oslo avd" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,)),"""",VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,))" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-1]/" & xAssosierte & "*100),"""",RC[-1]/" & xAssosierte & "*100)" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-2]/" & xtotal & "*100),"""",RC[-2]/" & xtotal & "*100)" ActiveCell.Offset(0, -3).Select ActiveCell.Offset(3, 0).Select Do ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,)),"""",VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,))" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-1]/" & x7Assosierte & "*100),"""",RC[-1]/" & x7Assosierte & "*100)" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-2]/" & xtotal & "*100),"""",RC[-2]/" & xtotal & "*100)" ActiveCell.Offset(0, -3).Select ActiveCell.Offset(1, 0).Select Loop Until ActiveCell = "7 ASSOSIERTE-OSLO" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,)),"""",VLOOKUP(RC[-1],'Ark2'!R2C[-1]:R300C[3],2,))" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-1]/" & x7Assosierte & "*100),"""",RC[-1]/" & x7Assosierte & "*100)" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(RC[-2]/" & xtotal & "*100),"""",RC[-2]/" & xtotal & "*100)" ActiveCell.Offset(0, -3).Select ActiveCell.Offset(3, 0).Select ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = _ Hilsen Torbjørn Lenke til kommentar
Harald Staff Skrevet 20. februar 2012 Del Skrevet 20. februar 2012 Hei Torbjørn Nå skal jeg være litt streng med deg. Bare litt. 1 Ikke deklarer variabler som Variant uten særs gode grunner. Det er dovenskap og unødig bruk av minne og prosessorkraft. Les deg opp på datatyper. 2 Kodeeksemplet ditt er ubrukelig uten det miljøet du sitter på. Du kan ikke vente at vi skal gjette oss til å konstruere et testmiljø der vi kan prøvekjøre og forbedre. 3 Du stiller ikke konkrete spørsmål nå, du tenker høyt. ..i beste mening, vi kjenner hverandre nå Beste hilsen Harald Lenke til kommentar
Bigelk Skrevet 22. februar 2012 Forfatter Del Skrevet 22. februar 2012 (endret) Hei Harald. No offence taken Men da kan vi jo starte med en Teller. Hvordan skriver jeg en kode som starter i en celle og teller rader til første tomme raden dukker opp? Å hvordan bruker jeg tallet telleren kom fram til seinere i koden? Jeg ser for meg noe sånt som dette. Dim y As Integer y = Count Range("a1").Select Do y ActiveCell.Offset(1, 0).Select Loop Until ActiveCell Is Empty range("b1").select for y = 1 to activecell.offset activecell = "hei" next y men veit ikke helt hvordan jeg skal få inn at for hver offset er y = +1 Hvis jeg er inne på riktig spor i det hele tatt her da. Hilsen Torbjørn Endret 22. februar 2012 av Bigelk Lenke til kommentar
Harald Staff Skrevet 23. februar 2012 Del Skrevet 23. februar 2012 "Bruke ting senere" er hva vi har variabler til, vi legger verdien dit og den huskes. Derfor er det viktig hvilken datatype det er og hvilken "scope" den har (som betyr, fra hvor er den tilgjengelig og når dør den?) Denne teller nedover kolonne 1 (A) og legger radnummeret til første tomme celle i variabel R: Sub test() Dim R As Long R = 1 Do Until Cells(R, 1).Value = "" R = R + 1 Loop ' så hva som helst, før MsgBox R End Sub Så vil jeg gjerne at du leser denne: http://www.dailydoseofexcel.com/archives/2004/04/27/beginning-vba-select-and-activate/ Beste hilsen Harald Lenke til kommentar
Bigelk Skrevet 24. februar 2012 Forfatter Del Skrevet 24. februar 2012 (endret) Takk for hjelpen Harald å takk for linken, mye igjen å lære. Jeg fant en kode som jeg har prøvd og bruke tidligere, men da fikk jeg den ikke til og fungere fordi jeg ikke skjønte helt hvordan den fungerte. K1 = Range("X1").CurrentRegion.Rows.Count - 2 Men hvis jeg har skjønt det riktig så teller denne koden alle celler som inneholder data i en kolonne eller range? (å trekker i fra 2 celler) Hilsen Torbjørn Endret 24. februar 2012 av Bigelk Lenke til kommentar
Harald Staff Skrevet 24. februar 2012 Del Skrevet 24. februar 2012 Currentregion er en tabell eller et sammenhengende dataområde, det du får når du står i en celle og trykker Ctrl * Bruk dette bare når du jobber med tabeller (som ved sortering, filtrering etc). Koden din teller antall rader i området, men når du ikke vet om området starter i celle A1 eller lenger ned og inn, kan du ikke bruke slik telling til å finne adresser. Og igjen; datatyper. K1 er sannsynligvis et heltall (Integer eller Long). Man trekker ikke celler fra heltall, man trekker heltall, som f.eks 2. Lenke til kommentar
Bigelk Skrevet 24. februar 2012 Forfatter Del Skrevet 24. februar 2012 jeg tok feil på det jeg skrev over her. ser ut til at den teller til første tomme celle Hilsen torbjørn Lenke til kommentar
Anders Hole Skrevet 27. februar 2012 Del Skrevet 27. februar 2012 Private Sub CommandButton1_Click() Dim selectRange Dim selectRange_rows, counter As Integer Dim testcelle As String testcelle = "" Set selectRange = Range("B1:B102") selectRange_rows = selectRange.Rows.Count For counter = 1 To selectRange_rows testcelle = selectRange.Cells(counter, 1).Value If (testcelle = "Oslo") Then selectRange.Cells(counter, 1).Value = "Bergen" 'gjøre noe her 'Beste er å lage en funksjon som kalles og da kan du gjøre hva som helst med ' resultatet i akkurat den cellen du søker gjennom 'du kan også gjøre dette uten å hente range fra worksheet med å bruke cell().Value End If Next End Sub Lenke til kommentar
Anders Hole Skrevet 27. februar 2012 Del Skrevet 27. februar 2012 Private Sub CommandButton1_Click() Dim selectRange Dim selectRange_rows, counter As Integer Dim testcelle As String testcelle = "" Set selectRange = Range("B1:B102") selectRange_rows = selectRange.Rows.Count For counter = 1 To selectRange_rows testcelle = selectRange.Cells(counter, 1).Value If (testcelle = "Oslo") Then selectRange.Cells(counter, 1).Value = "Bergen" 'gjøre noe her 'Beste er å lage en funksjon som kalles og da kan du gjøre hva som helst med ' resultatet i akkurat den cellen du søker gjennom 'du kan også gjøre dette uten å hente range fra worksheet med å bruke cell().Value End If Next End Sub Høyreklikk Class Modules, og insert -> new Class Module, bruk Class1 Private Sub CommandButton1_Click() Dim selectRange Dim selectRange_rows, counter As Integer Dim testcelle As String Dim newOversikt As Class1 Set newOversikt = New Class1 newOversikt.init testcelle = "" Set selectRange = Range("B1:B102") selectRange_rows = selectRange.Rows.Count For counter = 1 To selectRange_rows testcelle = selectRange.Cells(counter, 1).Value newOversikt.setAntall (testcelle) Next MsgBox (newOversikt.antallKiwii) End Sub Private xSpar, xMeny, xKiwii, xKiwio, xJoker, xUltra, xCentra, xRingen, xAssosierte, x7Assosierte, xtotal As Integer Public Sub init() xSpar = 0 xMeny = 0 xKiwii = 0 xKiwio = 0 xJoker = 0 xUltra = 0 xCentra = 0 xRingen = 0 xAssosierte = 0 x7Assosierte = 0 xtotal = 0 End Sub Public Property Get antallSpar() As Integer antallSpar = xSpar End Property Public Property Get antallMeny() As Integer antallMeny = xMeny End Property Public Property Get antallKiwii() As Integer antallKiwii = xKiwii End Property Public Sub setAntall(temp As String) Select Case temp Case "Spar" xSpar = xSpar + 1 xtotal = xtotal + 1 Case "Meny" xMeny = xMeny + 1 xtotal = xtotal + 1 Case "Kiwii" xKiwii = xKiwii + 1 xtotal = xtotal + 1 Case "Joker" xJoker = xJoker + 1 xtotal = xtotal + 1 Case "Ultra" xUltra = xUltra + 1 xtotal = xtotal Case Else 'do nothing End Select End Sub Lenke til kommentar
Bigelk Skrevet 28. februar 2012 Forfatter Del Skrevet 28. februar 2012 Tusen takk Anders! hadde aldri sett for meg at noen faktisk ville sette seg inn i den der. Skal teste koden etterhvert, må bare bruke litt til på og sette meg inn i den og lære litt. Hilsen Torbjørn Lenke til kommentar
Harald Staff Skrevet 28. februar 2012 Del Skrevet 28. februar 2012 En liten detalj Anders, til senere bruk. Det er lett å tro at man her deklarerer tre integer-variabler: Dim A, B, C as Integer Men det er bare C som er integer. A og B er Variant. Man må gjøre det på denne måten: Dim A as Integer, B as Integer, C as Integer Prøv også å bruke Long for heltall, ikke Integer. Long håndterer større tall (f.eks antall rader i et regneark), og koden kjører et lite hår kjappere. I en 32-bits verden oversettes nemlig Integer til Long før beregningen begynner. Beste hilsen Harald Lenke til kommentar
Anders Hole Skrevet 28. februar 2012 Del Skrevet 28. februar 2012 Velding enkelt, i hovedprogrammet opprettes en klasse som inneholder variablene, du skal ta vare på. Så lager du et array av en range. Deretter går du igjennom hele arrayet, fra element 0 til max element i range. Eller rad. Så sender du hvert eneste celleverdi, til klasse funksjonen som akkumelerer antall treff. Mulig jeg misforstod og at du skulle ha selve index til cellen? Isåfall kan du glemme klassen også, og bare kjøre switch/select, da vil du kunne skrive selectRange(counter + 2, 1), som er offset du ønsker. Men du kan også lagre index til selve elementet i array om du vil. Men da bør du også sende hele array til klassen. Om du forklarer litt mer helt hva du er ute etter så kan jeg lage dette til. Om dokumentet er alltid likt, template, så kan du også navngi en celle(gi et custom name). Isåfall blir det mye enklere Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå