Avatar billede oleheldam Nybegynder
05. februar 2006 - 11:35 Der er 8 kommentarer og
1 løsning

rækker og kolonner mm.

hejsa
udgangspunkt: et regneark af varierende størrelse, således at  antal rækker og kolonner ikke er kendt (der fyldes hele tiden nye rækker på). jeg har derfor brug for, at kunne finde antal rækker og antal kolonner og derefter afmærke området. Der er imidlertid den finesse, at jeg har brug for at kende antal rækker fra f.eks. celle B4 og fremefter - uanset at der er data i b1 - b3. Ideen er at rækkerne fra b4 og fremefter efter afmærkningen skal sorteres. Hvordan kan det lade sig gøre?
Avatar billede brynil Nybegynder
05. februar 2006 - 11:46 #1
Formoder det er Excel du taler om.

Du kan finde den sidst anvendte celle med denne:

Selection.SpecialCells(xlCellTypeLastCell).Select

Mht din finesse, så må du jo vide hvad det er du leder efter i kolonnen. Er det altid B4?

  Selection.SpecialCells(xlCellTypeLastCell).Select
  Range(Cells(4, 1), Cells(ActiveCell.row, ActiveCell.Column)).Select
Avatar billede oleheldam Nybegynder
05. februar 2006 - 12:32 #2
Ja det er excel jeg anvender. Jeg havde overset muligheden i at anvende Cell. Var fokuseret på at anvende et range af typen b4:x20.  hvor x er sidste celle. Kan du give en løsning på, hvordan jeg finder sidste celle ikke som et numerisk koordinat, men som f.eks. X20 altså bogstav og tal.
Avatar billede brynil Nybegynder
05. februar 2006 - 12:35 #3
Activecell.Address
Avatar billede oleheldam Nybegynder
05. februar 2006 - 13:26 #4
Dit første forslag til afmærkning giver et lidt pudsigt problem. Når jeg har tilføjet f.eks. 2 linier til et regneark, og efterfølgende sletter dem, så tages de pågældende celler med, når følgende linie eksekveres: Selection.SpecialCells(xlCellTypeLastCell).Select.  Kan du gennemskue det?  Proceduren i forenkelt for er gengivet.

Private Sub Gem_Click()
' her skal sorteringsrutinen placeres.

Dim icol As Integer
Dim irow As Integer
Dim txtregnr, txtflådenr, lstrailertyp As String

txtregnr = "hd4000"
txtflådenr = "200"
lstTrailertype = "køl"


Private Sub test()

Dim icol As Integer
Dim irow As Integer
Dim txtregnr, txtflådenr As String

’ blot for at variablerne har et indhold – normalt får de indhold via brugerinput
txtregnr = "X4000"
txtpakkenr = "A200"

Worksheets("ark2").Activate
Range("b4").Select
If Range("B4").Value = "" Then
    Range("b4").Activate
Else
    Selection.SpecialCells(xlCellTypeLastCell).Select
  Range(Cells(4, 2), Cells(ActiveCell.Row, ActiveCell.Column)).Select
   
    ActiveCell.Offset(Selection.Rows.Count, -1).Activate
    Rows(ActiveCell.Row).Insert Shift:=xlDown
End If
With ActiveCell
    .Value = txtregnr
    .Offset(0, 1).Value = lstpakkenr
End With

' sortering
Selection.SpecialCells(xlCellTypeLastCell).Select
  Range(Cells(4, 2), Cells(ActiveCell.Row, ActiveCell.Column)).Select

Selection.Sort Key1:=Range("b4"), Order1:=xlAscending, Header:=xlNo, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

End Sub
Avatar billede brynil Nybegynder
05. februar 2006 - 13:31 #5
Ja, det problem du beskriver var oppe for nogle få dage siden. Prøv at se her:

http://www.eksperten.dk/spm/683327

Se om problemet ikke forsvinder hvis du laver en .Count før du vælger område.
Avatar billede oleheldam Nybegynder
05. februar 2006 - 13:33 #6
du fik den forkerte procedure den korrekte følger her: den er taget ud af en større helhed.

Private Sub test()

Dim txtregnr, txtflådenr As String

’ blot for at variablerne har et indhold – normalt får de indhold via brugerinput
txtregnr = "X4000"
txtpakkenr = "A200"

Worksheets("ark2").Activate
Range("b4").Select
If Range("B4").Value = "" Then
    Range("b4").Activate
Else
    Selection.SpecialCells(xlCellTypeLastCell).Select
  Range(Cells(4, 2), Cells(ActiveCell.Row, ActiveCell.Column)).Select
   
    ActiveCell.Offset(Selection.Rows.Count, -1).Activate
    Rows(ActiveCell.Row).Insert Shift:=xlDown
End If
With ActiveCell
    .Value = txtregnr
    .Offset(0, 1).Value = lstpakkenr
End With

' sortering
Selection.SpecialCells(xlCellTypeLastCell).Select
  Range(Cells(4, 2), Cells(ActiveCell.Row, ActiveCell.Column)).Select

Selection.Sort Key1:=Range("b4"), Order1:=xlAscending, Header:=xlNo, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

End Sub
Avatar billede brynil Nybegynder
05. februar 2006 - 13:40 #7
Indsæt fx:

Dim cnt As Long

....
Else
    cnt = ActiveSheet.UsedRange.Rows.Count
    Selection.SpecialCells(xlCellTypeLastCell).Select
....
Avatar billede oleheldam Nybegynder
05. februar 2006 - 13:53 #8
Hej igen.
Begge dine svar virke fint - og jeg er en glad mand :-).
send et svar, så du kan få dine point.
Avatar billede brynil Nybegynder
05. februar 2006 - 13:54 #9
Det er godt ;)
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