Avatar billede denero Juniormester
09. april 2012 - 17:57 Der er 9 kommentarer og
1 løsning

Hente data fra række

Nedenstående finder data i rækken under den række, hvor data i celle bliver fundet. Hvad er der galt?

Private Sub Containernummer_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim X As Integer
Static C

        With Worksheets("Stamdata").Range("B2:B10000")
          Set C = .Find(Nummer, LookIn:=xlValues, LookAt:=xlWhole)
            If Not C Is Nothing Then
              'C.Address er den celle hvor data bliver fundet f.eks.$A$20
                X = InStr(2, C.Address, "$")
                Rekke = Val(Mid(C.Address, X + 1, 3)) ' Finder den række hvor din søgning er fundet
                Størrelse = .Cells(Rekke, 5)
     
            Else
                Størrelse = ""
            End If
        End With

End Sub
Avatar billede supertekst Ekspert
09. april 2012 - 18:28 #1
Mangler der ikke et C for .Cells(Rekke,5)?
Avatar billede supertekst Ekspert
09. april 2012 - 18:29 #2
p.s.: Den fundne række kan også hentes som C.row
Avatar billede denero Juniormester
09. april 2012 - 18:35 #3
Mangler der ikke et C for .Cells(Rekke,5)?

Prøv lige at forklare.
Avatar billede anlu Nybegynder
09. april 2012 - 19:37 #4
Så vidt jeg lige kan se er problemet at du henter rækken via adressen, fx $A$20 giver
Rekke = 20
, men
.Cells(Rekke,5)
refererer som det står til
Range("B2:B10000")
i worksheetet, altså. startende fra række 2.
Dvs. række 20 i arket er faktisk række 19 i dit range, og omvendt når du skriver
.Cells(Rekke, 5)
får du fat i række 21 i arket, hvis Rekke = 20.

I øvrigt underligt at den ikke brokker sig, efter som der ikke er 5 kolonner i B2:B10000??
Avatar billede denero Juniormester
09. april 2012 - 19:58 #5
Måske en løsning. Har ændret det fra et andet ark, hvor range var B1-B10000. Har derfor ændret dette og nu virker det tilsyneladende.
Anlu ledte mig på sporet - lægger du et svar?
Avatar billede anlu Nybegynder
09. april 2012 - 20:19 #6
okey dokey :)
Avatar billede molet Nybegynder
10. april 2012 - 02:15 #7
Fint anlu bragte dig på sporet, så problemet blev løst.
Med din øgede range fra B500 til B10000, vil du få et problem når du når til række 1000.
Rekke = Val(Mid(C.Address, X + 1, 3)) ' Finder den række hvor din søgning er fundet
skal ændres til
Rekke = Val(Mid(C.Address, X + 1, 5))

3 læser kun 3 cifre i rækkenummeret, op til celle $B$999, det vil sige række 1000,1001 o.s.v., vil blive læst som række 100.
5 læser 5 cifre, op til række $B$99999.

anlu:
"I øvrigt underligt at den ikke brokker sig, efter som der ikke er 5 kolonner i B2:B10000??"
Den skal ikke brokke sig, der er intet problem i at referere til celler uden for området. Hvis området var sat til B2:F10000, ville der også blive søgt i kolonnerne C,D,E,F.
Avatar billede anlu Nybegynder
10. april 2012 - 16:19 #8
Tja, jeg synes nu det er underlig/inkonsistent opførsel at tillade at Range.Cells kan angive celler uden for det pågældende range :-)
Avatar billede denero Juniormester
11. april 2012 - 13:38 #9
Da jeg ikke er helt skrap til det her, vil jeg gerne have forklaret flg.:

1. Rekke = Val(Mid(C.Address, X + 1, 5))

2. Den skal ikke brokke sig, der er intet problem i at referere til celler uden for området. Hvis området var sat til B2:F10000, ville der også blive søgt i kolonnerne C,D,E,F.

3. Tja, jeg synes nu det er underlig/inkonsistent opførsel at tillade at Range.Cells kan angive celler uden for det pågældende range :-)
Avatar billede denero Juniormester
11. april 2012 - 14:44 #10
Har problem med at få angivet data i kolonne A. Opretter nyt spørgsmål (Hente data fra tilhørende række), hvor jeg beskriver "opgave forhåbentlig lidt tyderligere
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester