Avatar billede dc Nybegynder
17. september 2003 - 08:45 Der er 26 kommentarer og
1 løsning

VBA Editor: Finde sidste brugte celle i en række.

Hej, er der en nem måde at finde den sidst brugte celle i en række når den rækken er kendt? Det skal bruges til at macroen sætter noget ind sidst i rækken alt efter en række handlinger, tak.
Avatar billede janvogt Praktikant
17. september 2003 - 09:05 #1
Denne vælger den første tomme række i den aktive række.

ActiveCell.End(xlDown).Offset(1, 0).Select

Var det det du skulle bruge?
Avatar billede kabbak Professor
17. september 2003 - 09:07 #2
Sub Sidste()
Range("B65536").Select
Selection.End(xlUp).Select
End Sub

Ret bogstavet B i 'Range("B65536").Select' til den kolonne du vil bruge
Avatar billede aheiss Praktikant
17. september 2003 - 09:09 #3
Det var den sidste i rækken ikke?
ActiveCell.End(xlToRight).Offset(0, 1).Select
Avatar billede aheiss Praktikant
17. september 2003 - 09:10 #4
Kun en kommentar, da den var tyvstjålden fra vogt
Avatar billede janvogt Praktikant
17. september 2003 - 09:17 #5
Jeg læste det faktisk som sidste række, så din er den korrekte (og dermed pointene) :-)
Avatar billede dc Nybegynder
17. september 2003 - 10:31 #6
den kommer med en runtime fejl:
Run-time error '1004'
Application-defined or object-defined error
hvad betyder det?
Avatar billede janvogt Praktikant
17. september 2003 - 10:55 #7
Det er nok fordi, at du skal stille markøren på den pågældende række.

Alternativt, kan du indsætte linien
Range("A1").select i din kode først.
Avatar billede janvogt Praktikant
17. september 2003 - 10:56 #8
Brug f.eks.
Range("A23").Select
hvis det er i række 23 du ønsker at finde den sidste celle.'
Avatar billede dc Nybegynder
17. september 2003 - 11:03 #9
den kommer stadig med samme runtime error :(
koden er:
dim c
c=ActiveCell.End(xlToRight).Offset(0, 1).Select
Avatar billede janvogt Praktikant
17. september 2003 - 11:06 #10
Prøv

Sub Sidste()
  ActiveCell.End(xlToRight).Offset(0, 1).Select
End Sub
Avatar billede dc Nybegynder
17. september 2003 - 11:23 #11
forstår det ikke det virker stadig ikke :(
Avatar billede janvogt Praktikant
17. september 2003 - 11:26 #12
Tryk ALT+11 for at komme ind i VBA-editoren.
Her indsætter du et nyt modul og paster koden ind.

Sub Sidste()
  Range("A23").Select 
  ActiveCell.End(xlToRight).Offset(0, 1).Select
End Sub

"23" skal udskiftes med det rækkenr. du ønsker at finde sidste celle.
Avatar billede janvogt Praktikant
17. september 2003 - 11:32 #13
Undskyld, ALT+F11
Avatar billede bak Forsker
17. september 2003 - 12:25 #14
Hvis vi lige holder fast i din egen sætning:

dim c as Range
Set c=ActiveCell.End(xlToRight).Offset(0, 1)
c.Select
Avatar billede dc Nybegynder
17. september 2003 - 13:24 #15
:-/ Ked af at sige det men fejlen som beskrevet i "Kommentar: dc
17/09-2003 10:31:38" kommer stadig... hvad kan der være galt? koden ligger i en funktion og jeg kan se at den aktive cell er A4.
Avatar billede bak Forsker
17. september 2003 - 13:49 #16
to ting.
står der noget i b4, ellers får du fejlmeddelelse

jeg vil gerne se hele din funktion.
bruger du den i regnearket eller bare i vba ?
Avatar billede dc Nybegynder
17. september 2003 - 14:21 #17
bak -> der står ikke noget i B4 og desuden ville det være kanont hvis den først starter med at lede efter tom celle efter kolonne b, da der altid vil stå noget i kolonne A og kolonne B skal altid være tom, da den bliver brugt til status.

Jeg bruger funktionen i regnearket og den ser sådan ud:
Public Function fs_ReturnLastCellFromCurrentRow() As String
    Dim s$, w$, i%
''''''''
'    Dim c As Range
'    Set c = ActiveCell.End(xlToRight).Offset(0, 1)
'    c.Select
''''''''
    i = 67
    s = Chr$(i) + CStr(piCurrentRow)
    w = Range(s).Value
    While w <> ""
        i = i + 1
        s = Chr$(i) + CStr(piCurrentRow)
        w = Range(s).Value
    Wend
    fs_ReturnLastCellFromCurrentRow = s
End Function

Det der ikke er kommenteret ud er det jeg bruger nu og det virker godt nok, men det andet ser ud til at være smartere :)
Avatar billede bak Forsker
17. september 2003 - 15:42 #18
Jeg kan ikke lige se hvad du skal bruge så jeg har lavet 3 funktion.

1. funktion returnerer værdien af sidste celle i rækken (0 hvis ingen celler efter B)
2. funktion returnerer adressen (IV hvis ingen celler efter B)
3. funktion returnerer kolonnen (#Value hvis ingen celler efter B)

funktionen er lavet lidt om så den ikke bruger activecell, men den adresse du kommer i.
feks.
=fs_ReturnLastCellFromCurrentRow(A23) giver værdien af sidst (kontinuert) udfyldte celle i række 23. Starter fra kolonne B.

Public Function fs_ReturnLastCellFromCurrentRow(rng As Range)
Application.Volatile
fs_ReturnLastCellFromCurrentRow = Cells(rng.Row, 2).End(xlToRight).Value
End Function

Public Function fs_ReturnLastCellAddressFromCurrentRow(rng As Range)
Application.Volatile
fs_ReturnLastCellAddressFromCurrentRow = Cells(rng.Row, 2).End(xlToRight).Address
End Function

Public Function fs_ReturnLastCellColumnFromCurrentRow(rng As Range)
Application.Volatile
fs_ReturnLastCellColumnFromCurrentRow = Chr(Cells(rng.Row, 2).End(xlToRight).Column + 64)
End Function
Avatar billede bak Forsker
17. september 2003 - 16:08 #19
Sorry, det holder ikke :-(((

test lige denne istedet
Public Function fs_ReturnLastCellFromCurrentRow(rng As Range)
Application.Volatile
If Len(Cells(rng.Row, 4)) > 0 Then
    fs_ReturnLastCellFromCurrentRow = Cells(rng.Row, 3).End(xlToRight).Value
Else
    fs_ReturnLastCellFromCurrentRow = Cells(rng.Row, 3).Value
End If
End Function
Avatar billede dc Nybegynder
19. september 2003 - 12:42 #20
hvad skal jeg kalde funktionen med ?
(rng As Range) hvordan skal rng se ud?
Avatar billede bak Forsker
19. september 2003 - 13:08 #21
=fs_ReturnLastCellFromCurrentRow(A5)

A5 er en tilfældig celle i den række, hvor du ønsker sidste værdi oplyst
Avatar billede dc Nybegynder
19. september 2003 - 14:01 #22
= fs_ReturnLastCellFromCurrentRow(A5) giver fejlen:
"Compile error: Variable not defined" ?
Avatar billede kabbak Professor
19. september 2003 - 17:14 #23
=fs_ReturnLastCellFromCurrentRow("A5")
der manglede ""
Avatar billede bak Forsker
19. september 2003 - 21:17 #24
Jeg troede du ville bruge den som en regnearkarksfunktion.
hvis du vil bruge den i vba så skriv
= fs_ReturnLastCellFromCurrentRow(range("A5"))
Avatar billede dc Nybegynder
26. september 2003 - 13:10 #25
bak -> jeg har valgt din løsning, kom med et svar og du skal få point :)
Avatar billede bak Forsker
26. september 2003 - 14:24 #26
ok :-)
Avatar billede kabbak Professor
01. februar 2004 - 00:56 #27
Lukketid.
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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