Gå til innhold

[Løst] Excel 2007 vba Telle celler til et kriterie blir møtt


Anbefalte innlegg

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
Videoannonse
Annonse

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

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

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 av Bigelk
Lenke til kommentar

"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

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 av Bigelk
Lenke til kommentar

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
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

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

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

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...