Avatar billede p_h_g Nybegynder
09. oktober 2005 - 18:21 Der er 8 kommentarer og
1 løsning

Problem med fejl i kode til sletning af linier

Jeg har noget kode der sletter to linier i et ark via. en listbox: lstKortType og en knap: cmdSLET

Private Sub cmdSLET_Click()
Dim i As Integer
Dim sletdata As String
    A = ActiveSheet.Name
    i = lstKortType.ListIndex + 1
    sletdata = LTrim(Str(Int(i + 7))) + ":" + LTrim(Str(Int(i + 7)))
    Rows(sletdata).Select
    Selection.Delete Shift:=xlUp
    Rows(sletdata).Select
    Selection.Delete Shift:=xlUp
    Range("B11").Select
frmslet.Hide
End Sub

Private Sub UserForm_Activate()
With lstKortType
.RowSource = "SLET2"
.ListIndex = 0
End With
End Sub

men da hver 2 linie står tom i listboxen, vil jeg skjule dem med koden herunder:

Private Sub UserForm_Activate()
With lstKortType
    lstKortType.Clear
  For Each c In ActiveSheet.[SLET2]
        If c > "" Then lstKortType.AddItem c
    Next c
  .ListIndex = 0
End With
End Sub

problemet er nu at cmdSLET_Click() ikke længere virker korekt (den sletter ikke det man vælger i listboxen; "sletdata" skal nok skrives om)

nogen der har et forslag?
Avatar billede kabbak Professor
09. oktober 2005 - 18:29 #1
Hvis det altid er hver anden der er tom, og den første altid er udfyldt, så vil jeg tro at denne kan gøre det.

i = lstKortType.ListIndex + 1
If I = 1 then
    sletdata = LTrim(Str(Int(i + 7))) + ":" + LTrim(Str(Int(i + 7)))
Else
sletdata = LTrim(Str(Int((i*2) + 7))) + ":" + LTrim(Str(Int((i*2) + 7)))
end if
  Rows(sletdata).Select
Avatar billede p_h_g Nybegynder
09. oktober 2005 - 19:19 #2
Den ramte lige en linie ved siden af så:

i = lstKortType.ListIndex + 1
If i = 1 Then
    sletdata = LTrim(Str(Int(i + 8))) + ":" + LTrim(Str(Int(i + 8)))
Else
    sletdata = LTrim(Str(Int((i * 2) + 8))) + ":" + LTrim(Str(Int((i * 2) + 8)))
End If
Rows(sletdata).Select

Det virker...
...men hvis jeg prøver at slette den første "ting" (den linie der står øverst) i listboxen sker der noget underligt, så ser det ud som om den kun sletter en linie og ikke 2, hvad kan det skyldes?
Avatar billede kabbak Professor
09. oktober 2005 - 19:22 #3
du har da også kun bedt om en, det er samme tal på beggesider af ":"
Avatar billede kabbak Professor
09. oktober 2005 - 19:26 #4
Private Sub cmdSLET_Click()
Dim i As Integer
Dim sletdata As String
    A = ActiveSheet.Name
= lstKortType.ListIndex + 1
If i = 1 Then
    sletdata = LTrim(Str(Int(i + 8))) + ":" + LTrim(Str(Int(i + 9)))
Else
    sletdata = LTrim(Str(Int((i * 2) + 8))) + ":" + LTrim(Str(Int((i * 2) + 9)))
End If
Rows(sletdata).Delete Shift:=xlUp
        Range("B11").Select
frmslet.Hide
End Sub
Avatar billede kabbak Professor
09. oktober 2005 - 19:28 #5
Private Sub cmdSLET_Click()
Dim i As Integer
Dim sletdata As String
    A = ActiveSheet.Name
I = lstKortType.ListIndex + 1
If i = 1 Then
    sletdata = LTrim(Str(Int(i + 8))) + ":" + LTrim(Str(Int(i + 9)))
Else
    sletdata = LTrim(Str(Int((i * 2) + 8))) + ":" + LTrim(Str(Int((i * 2) + 9)))
End If
Rows(sletdata).Delete Shift:=xlUp
        Range("B11").Select
frmslet.Hide
End Sub

der smuttede lidt først
Avatar billede p_h_g Nybegynder
09. oktober 2005 - 19:57 #6
Det virker stadig men med samme fejl
den første "ting" står i linie 10 og 11, men når den sletter sletter den 9 og 10
men længere nede f.eks. 12 og 13 eller 16 og 17 virker det fint...
Avatar billede p_h_g Nybegynder
09. oktober 2005 - 20:02 #7
Tænkte mig lidt om :)
Der var den...

Private Sub cmdSLET_Click()
Dim i As Integer
Dim sletdata As String
    A = ActiveSheet.Name
i = lstKortType.ListIndex + 1
If i = 1 Then
    sletdata = LTrim(Str(Int(i + 9))) + ":" + LTrim(Str(Int(i + 10)))
Else
    sletdata = LTrim(Str(Int((i * 2) + 8))) + ":" + LTrim(Str(Int((i * 2) + 9)))
End If
Rows(sletdata).Delete Shift:=xlUp
        Range("B11").Select
frmslet.Hide
End Sub
Avatar billede p_h_g Nybegynder
09. oktober 2005 - 20:04 #8
glemte at skrive: smid et svar for point...
Avatar billede kabbak Professor
09. oktober 2005 - 20:35 #9
et svar ;-))
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