24. marts 2009 - 10:35Der er
8 kommentarer og 1 løsning
Indsætte data i første ledige celle efter kol. L med betingelse i kol. B
1. På et ark, hvor hver række præsenterer dataoplysninger om forskellige lokaliteter, skal jeg en gang imellem indsætte den samme oplysning i første ledige celle efter kolonne L i alle rækker, dog betinget af et bestemt "navn" er til stede i kolonne B. Jeg laver en makro til hvert "navn", som så hver skal aktiveres af en knap med det pågældende navn.
2. Mulighed for at fortryde handlingen.
3. Mulighed for at gøre det i alle rækker - altså indsætte i første ledige celle efter kolonne L, bare der er tekst i kolonne B.
Dim række, Kolonne Dim antalRækker, dl1Værdi, førsteKolonne Private Sub CommandButton1_Click() 'INDSÆT If Me.ListBox1.ListIndex > -1 Then bværdi = LCase(Me.ListBox1) Traverser bværdi, True End If End Sub Private Sub CommandButton2_Click() 'FORTRYD If Me.ListBox1.ListIndex > -1 Then bværdi = LCase(Me.ListBox1) Traverser bværdi, False End If End Sub Private Sub Traverser(bværdi, aktion) Dim celleB For række = 1 To antalRækker celleB = LCase(Cells(række, 2))
Rem Findes den valgte værdi i kolonne B If (bværdi = "alle" And celleB <> "") Or celleB = bværdi Then førsteKolonne = findFørsteKolonne
Rem indsættelse eller fortryd If aktion = True Then Rem - INDSÆT Cells(række, førsteKolonne) = dl1Værdi Else If Cells(række, førsteKolonne - 1) = dl1Værdi Then Rem - FORTRYD Cells(række, førsteKolonne - 1) = "" End If End If End If Next række End Sub Private Sub ListBox1_Click() 'bVærdi er valgt sætKnapVærdi True End Sub Private Sub UserForm_activate() antalRækker = ActiveCell.SpecialCells(xlLastCell).Row dl1Værdi = activesheet.Range("DL1")
Rem Indsæt tekster With UserForm1.ListBox1 .AddItem "Alle" .AddItem "Aaaa" .AddItem "Bbbb" .AddItem "Cccc" .AddItem "Dddd" .AddItem "Eeee" .AddItem "Ffff" .AddItem "Gggg" End With
sætKnapVærdi False End Sub Private Sub sætKnapVærdi(knapværdi) Me.CommandButton1.Enabled = knapværdi Me.CommandButton2.Enabled = knapværdi End Sub Private Function findFørsteKolonne() 'efter L (=M) For Kolonne = 13 To 240 If Cells(række, Kolonne) = "" Then findFørsteKolonne = Kolonne Exit Function End If Next Kolonne End Function
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.