Avatar billede swa2012 Nybegynder
30. september 2012 - 00:44 Der er 5 kommentarer og
1 løsning

Start makro fra cmd button og få listbox ind i macro

Jeg har nedenstående CMD button som skal starte makroen DeleteBlankARows() (den virker hvis jeg starter den som macro direkte fra det pågældende ark, dog med den motifikation at jeg vælger "FORD" istedet for listbox2) , men ved ikke hvordan det skal gøres, samtidig har jeg listbox2 hvor jeg vælger nogle bilmærker, som skal slettes, hvad skal kommandoen være i If cells.....?

Private Sub CommandButton3_Click()

' Sub DeleteBlankARows()

    With Application
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
        Dim r As Long
        For r = Cells(Rows.Count, 11).End(xlUp).Row To 1 Step -1
            If Cells(r, 11) = ListBox2.Value Then Rows(r).Delete
        Next r
        .Calculation = xlCalculationAutomatic
        .ScreenUpdating = True
    End With
   
End Sub
Avatar billede supertekst Ekspert
30. september 2012 - 15:29 #1
Rem VBA-koden er indsat i en Userform:
Rem ListBox1 er anvendt i stedet for ..2

Sub DeleteBlankARows()
    With Application
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
       
        Dim r As Long
        For r = Cells(Rows.Count, 11).End(xlUp).Row To 1 Step -1
            If Cells(r, 11) = ListBox1.Value Then
                Rows(r).Delete
            End If
        Next r
        .Calculation = xlCalculationAutomatic
        .ScreenUpdating = True
    End With
   
End Sub
Private Sub CommandButton1_Click()
    DeleteBlankARows
End Sub
Private Sub UserForm_activate()    'Opbygning af test-data
    Me.ListBox1.AddItem "AAA"
    Me.ListBox1.AddItem "BBB"
    Me.ListBox1.AddItem "CCC"
    Me.ListBox1.AddItem "DDD"
End Sub
Avatar billede swa2012 Nybegynder
30. september 2012 - 20:05 #2
Hej Igen

Det virker næsten:-)

Jeg ville have vedhæftet en kopi af useform, men ved ikke hvordan jeg kan vedhæfte word dokument?


Når jeg markere flere felter og flytter dem fra Listbox1 til listbox2, så sletter kun hvis listbox 2 har en værdi, hvis listbox2 har flere værdier, så sker der ikke noget, kan det også løses?


Private Sub UserForm_Initialize()

  Sheets("Ark2").Select
 
End Sub
Private Sub UserForm_activate()    'Opbygning af test-data
   
    Me.ListBox1.List = Worksheets("Soeg").Range("T2:T37").Value
   
End Sub

Sub DeleteBlankARows()
    With Application
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
     
        Dim r As Long
        For r = Cells(Rows.Count, 10).End(xlUp).Row To 1 Step -1
            If Cells(r, 10) = ListBox1.Value Then
                Rows(r).Delete
            End If
        Next r
        .Calculation = xlCalculationAutomatic
        .ScreenUpdating = True
    End With
 
End Sub
Private Sub CommandButton3_Click()

    DeleteBlankARows

End Sub

Private Sub CommandButton1_Click()

For i = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(i) = True Then ListBox2.AddItem ListBox1.List(i)
Next i

End Sub


Private Sub CommandButton2_Click()

Dim counter As Integer
counter = 0

For i = 0 To ListBox2.ListCount - 1
    If ListBox2.Selected(i - counter) Then
        ListBox2.RemoveItem (i - counter)
        counter = counter + 1
    End If
Next i

CheckBox2.Value = False

End Sub

Private Sub OptionButton3_Click()

ListBox1.MultiSelect = 2
ListBox2.MultiSelect = 2

End Sub

Private Sub CheckBox1_Click()

If CheckBox1.Value = True Then
    For i = 0 To ListBox1.ListCount - 1
        ListBox1.Selected(i) = True
    Next i
End If

If CheckBox1.Value = False Then
    For i = 0 To ListBox1.ListCount - 1
        ListBox1.Selected(i) = False
    Next i
End If

End Sub

Private Sub CheckBox2_Click()

If CheckBox2.Value = True Then
    For i = 0 To ListBox2.ListCount - 1
        ListBox2.Selected(i) = True
    Next i
End If

If CheckBox2.Value = False Then
    For i = 0 To ListBox2.ListCount - 1
        ListBox2.Selected(i) = False
    Next i
End If

End Sub
Avatar billede supertekst Ekspert
30. september 2012 - 22:54 #3
Ser på det senere...

PS: Anvend venligst KOMMENTAR når du svarer. SVAR anvendes af forslagsstiller når et indlæg forventes af kunne løse det stillede problem. Et SVAR kan så blive ACCEPTERET eller AFVIST af opgavestiller.
Avatar billede supertekst Ekspert
01. oktober 2012 - 11:27 #4
Har tilføjet en funktion, der anvendes i DeleteBlankARows

Sub DeleteBlankARows()
    With Application
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
     
        Dim r As Long
        For r = Cells(Rows.Count, 10).End(xlUp).Row To 1 Step -1
            If erDetListeVærdi(Cells(r, 10)) = True Then
                Rows(r).Delete
            End If
        Next r
        .Calculation = xlCalculationAutomatic
        .ScreenUpdating = True
    End With
End Sub
Private Function erDetListeVærdi(xlsVærdi)
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) = True _
            And ListBox1.List(i) = xlsVærdi Then
                erDetListeVærdi = True
                Exit Function
        End If
    Next i
    erDetListeVærdi = False
End Function
Avatar billede swa2012 Nybegynder
02. oktober 2012 - 20:18 #5
Tak for det, virker perfekt. Er du sød at lægge et svar

Hilsen

søren
Avatar billede supertekst Ekspert
02. oktober 2012 - 21:00 #6
Selv tak - et svar kommer her..
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