13. november 2011 - 18:19Der er
23 kommentarer og 1 løsning
Erstatte værdi i kolonne via vba
Vil gerne oprette en søg og erstat funktion, som via en combobox med værdier fra en kolonne viser hvilke søgekriterier jeg kan vælge. Når jeg har valgt en værdi, skal jeg kunne erstatte denne værdi i kolonnen med en ny værdi i en tekstboks under comboboksen og trykke erstat.
J, det er via en userform og værdierne er unikke.Det drejer sig om bilregistreringsnumre (7 bogstaver/tal), som så skal ændres i forbindelse med salg. Så den skal gå ned i kolonnen og ændre fra gl. til nyt nr.
Det er den inbyggede "formular" jeg tænker på. Man kan vælge "Kriterium" klikke i "reg. nr." taste de to bogstaver og vælg "Find næste" indtil match. Ikke helt så advanceret :-)
VBA-kode i Userform: (filen kan fremsendes - @-adresse under min profil)
Dim ræk As Integer, erstatRække As Integer Private Sub CommandButton1_Click() erstatRække = Me.ComboBox1.ListIndex + 2 Range("B" & erstatRække).Value = Me.TextBox1
Me.CommandButton1.Enabled = False End Sub Private Sub TextBox1_Change() If Me.TextBox1 <> "" And Len(Me.TextBox1) = 7 Then Me.CommandButton1.Enabled = True Else Me.CommandButton1.Enabled = False End If End Sub Private Sub UserForm_activate() Me.ComboBox1.Clear For ræk = 2 To ActiveCell.SpecialCells(xlLastCell).Row Me.ComboBox1.AddItem Range("B" & ræk) Next ræk End Sub
Undskyld forsinkelsen, har haft travlt. Har prøvet det af (virker) og har følgende spørgsmål: 1.Kan man nøjes med de celler, der er indhold i, i comboboksen? 2.Kan man også lave en erstatning på en andet ark (dvs. erstat 2 steder) af samme reg. nr.? eks.ark 1 kol.B og ark 2 kol.B?
Rem Version 2 Dim ræk As Integer, erstatRække As Integer Private Sub CommandButton1_Click() Rem Ark1 erstatRække = findRække(Sheets(1), "B:B", Me.ComboBox1) If erstatRække > 0 Then Range("B" & erstatRække).Value = Me.TextBox1 End If
Rem Ark2 erstatRække = findRække(Sheets(2), "B:B", Me.ComboBox1) If erstatRække > 0 Then Sheets(2).Range("B" & erstatRække).Value = Me.TextBox1 End If
Me.CommandButton1.Enabled = False End Sub Private Sub TextBox1_Change() If Me.TextBox1 <> "" And Len(Me.TextBox1) = 7 Then Me.CommandButton1.Enabled = True Else Me.CommandButton1.Enabled = False End If End Sub Private Sub UserForm_activate() Me.ComboBox1.Clear For ræk = 2 To ActiveCell.SpecialCells(xlLastCell).Row If Range("B" & ræk).Value <> "" Then Me.ComboBox1.AddItem Range("B" & ræk) End If Next ræk End Sub Private Function findRække(ark, område, id)
With ark.Range(område) Set c = .Find(id, LookIn:=xlValues, LookAt:=xlWhole) If Not c Is Nothing Then findRække = c.Row Else findRække = 0 End If End With Exit 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.