Avatar billede kestr Nybegynder
07. januar 2008 - 20:26 Der er 9 kommentarer og
1 løsning

Søgning efter sidste udfyldte celle i en kolonne

Hej alle

Jeg har et lille problem her.. Jeg har en liste af koder som står listet op nedad i kolonne A i et excelark. Det vides ikke hvor mange koder der er nedad, dvs makroen skal søge nedad i listen, men kun indtil sidst udfyldte celle.. Hvordan gør jeg det?

Den makro jeg selv har lavet søger hele kolonne A, men da der kun pt. er knap 2000 koder nedad, så er det lidt overkill at den skal søge i samtlige 65500 rækker - altså såfremt den ikke finder koden på listen..

Kan nogen hjælpe med at få den til at virke som beskrevet ovenfor?

Min makro er her neden for:

MVH
Kenneth
------------------------------------------------------------

main()

Function main()
    Dim ExcelApp, sfk, row, lastrow

    Set ExcelApp = CreateObject("Excel.Application")

        ExcelApp.Workbooks.Open("H:\S.koder.xls")
    ExcelApp.Sheets("s.koder").Select

    sfk = InputBox("Tast s.kode")
   
    lastrow = 65536
   
    'Gennemløber Excelarket
    For row = 2 To lastRow
        If(sfk = Trim(ExcelApp.Cells(row,1).Value)) Then
            MsgBox ExcelApp.Cells(row,2).Value
            Exit For
        End If
    Next

    ExcelApp.Quit
End Function
Avatar billede word-hajen Nybegynder
07. januar 2008 - 20:46 #1
Hvad med en udbygning af din If
*********
elseif ExcelApp.Cells(row,1) = "" then
    Exit For
**************
Avatar billede gider_ikke_mere Nybegynder
07. januar 2008 - 22:11 #2
Hvad med ActiveCell.SpecialCells(xlLastCell).Row for hele arket eller Range("A65536").End(xlUp).Row hvis det kun er i kolonne A
Avatar billede kabbak Professor
08. januar 2008 - 00:04 #3
enig med akyne

Jeg skriver lige den rettede kode


main()

Function main()
    Dim ExcelApp, sfk, row, lastrow

    Set ExcelApp = CreateObject("Excel.Application")

        ExcelApp.Workbooks.Open("H:\S.koder.xls")
    ExcelApp.Sheets("s.koder").Select

    sfk = InputBox("Tast s.kode")
 
    lastrow = Range("A65536").End(xlUp).Row
 
    'Gennemløber Excelarket
    For row = 2 To lastRow
        If(sfk = Trim(ExcelApp.Cells(row,1).Value)) Then
            MsgBox ExcelApp.Cells(row,2).Value
            Exit For
        End If
    Next

    ExcelApp.Quit
End Function
Avatar billede kestr Nybegynder
08. januar 2008 - 09:56 #4
Mange tak for jeres hjælp.. Desværre siger systemet: "Variable is undefined: Ramge.. og så går den i stå.. Har i en ide om hvorfor?
Avatar billede kabbak Professor
08. januar 2008 - 12:57 #5
Ramge ?
har du stavet det forkert, det hedder Range.
Avatar billede kestr Nybegynder
08. januar 2008 - 13:11 #6
Har stavet forkert her, der står Range i makroen..
Avatar billede kabbak Professor
08. januar 2008 - 14:51 #7
Jeg tror at det er fordi du har row i din dim, Row er et reseveret ord i excel.
prøv at lave row om

main()

Function main()
    Dim ExcelApp, sfk, rw, lastrow

    Set ExcelApp = CreateObject("Excel.Application")

        ExcelApp.Workbooks.Open("H:\S.koder.xls")
    ExcelApp.Sheets("s.koder").Select

    sfk = InputBox("Tast s.kode")

    lastrow = Range("A65536").End(xlUp).Row

    'Gennemløber Excelarket
    For rw = 2 To lastRow
        If(sfk = Trim(ExcelApp.Cells(rw,1).Value)) Then
            MsgBox ExcelApp.Cells(rw,2).Value
            Exit For
        End If
    Next

    ExcelApp.Quit
End Function
Avatar billede kestr Nybegynder
08. januar 2008 - 15:02 #8
Ok tak for hjælpen.. :o)
Avatar billede kabbak Professor
08. januar 2008 - 16:21 #9
akyhne skal lige svare først, inden du kan give point.
Avatar billede gider_ikke_mere Nybegynder
08. januar 2008 - 17:43 #10
Ok.
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
Kurser inden for grundlæggende programmering

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