09. oktober 2005 - 18:21Der 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)
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?
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
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
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...
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
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.