Avatar billede denero Juniormester
13. november 2011 - 18:19 Der 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.
Avatar billede supertekst Ekspert
14. november 2011 - 08:45 #1
Er det via en Userform?
Er værdierne i kolonne unikke?
Avatar billede denero Juniormester
14. november 2011 - 09:08 #2
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.
Avatar billede supertekst Ekspert
14. november 2011 - 09:13 #3
Ok - vender tilbage senere..
Avatar billede store-morten Ekspert
14. november 2011 - 18:09 #4
Er det en liste?
Med start i A1 og overskrifter i række 1?
Avatar billede denero Juniormester
14. november 2011 - 18:39 #5
Ja, hver linje repræsenterer en bil med div. oplysninger. Kolonne B er reg. nr. på bilen og er det der skal "udskiftes" i forbindelse med salg.
Avatar billede store-morten Ekspert
14. november 2011 - 18:44 #6
Excel Version?
Avatar billede store-morten Ekspert
14. november 2011 - 18:54 #7
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 :-)
Avatar billede store-morten Ekspert
14. november 2011 - 19:12 #8
Eller måske "filter" kan bruges?
Søg: de to bogstaver, og mulige plader vises :-)
Avatar billede denero Juniormester
14. november 2011 - 19:25 #9
Det må du forklare nærmere. Jeg vil gerne have at rettelserne sker via userform.
Avatar billede store-morten Ekspert
14. november 2011 - 19:41 #10
Avatar billede store-morten Ekspert
14. november 2011 - 21:12 #11
Er det noget?
Avatar billede denero Juniormester
14. november 2011 - 22:07 #12
Det var ikke helt det jeg tænkte på - vil hellere have en userform, som jeg mener gør det enklere at overskue for bruger.
Avatar billede store-morten Ekspert
14. november 2011 - 22:20 #13
Ok, så må vi se hvad supertekst kommer med af løsningsforslag.
Avatar billede denero Juniormester
14. november 2011 - 22:23 #14
ok - foreløbigt tak for hjælpen.
Avatar billede supertekst Ekspert
14. november 2011 - 23:55 #15
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
Avatar billede denero Juniormester
19. november 2011 - 07:29 #16
Hej Supertext

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?
Avatar billede supertekst Ekspert
19. november 2011 - 09:39 #17
Hej denero

Helt ok (det har jeg også)

1.
2.
- Det kan man godt - kræver lidt ændring i programmeringen - vender tilbage..
Avatar billede supertekst Ekspert
19. november 2011 - 17:37 #18
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

End Function
Avatar billede denero Juniormester
21. november 2011 - 08:46 #19
Hej Supertext

Det kan jeg ikke lige få til at virke.
Har ændret flg.

  erstatRække = findRække(Sheets(1), "B:B", Me.ComboBox1)
til
  erstatRække = findRække(Sheets(Faktura), "B:B", Me.ComboBox1)
og
erstatRække = findRække(Sheets(2), "B:B", Me.ComboBox1)
til
erstatRække = findRække(Sheets(Bildatabase), "B:B", Me.ComboBox1)
til
  Sheets(2).Range("B" & erstatRække).Value = Me.TextBox1
til
Sheets(Bildatabase).Range("B" & erstatRække).Value = Me.TextBox1

Med hnsyn til "Private funktion findRække(ark,område,id) er jeg lidt i tvivl om, hvad jeg skal gøre med.
Avatar billede supertekst Ekspert
21. november 2011 - 09:23 #20
Send en mail - så returnerer jeg min model. @-adresse under min profil.
Avatar billede denero Juniormester
21. november 2011 - 10:51 #21
Det virker:
Har forstået, at jeg ikke skal ændre

findRække(Sheets(Faktura), "B:B", Me.ComboBox1) men i stedet sætte nr. ind på ark med det nummer det ligger med i mappen?

eks. som det 3. ark:
findRække(Sheets(3), "B:B", Me.ComboBox1)

I dit foreslag starter userformen op ved opstart af projektmappe, min kaldes via trykknap - det gør vel ingen forskel.

Kan men sikre, at det reg. nr. man foreslår, hvis man selv skriver i comboboksen, kun kan komme fra listen i comboboksen, evt med fejlmelding?



Har ligeledes sat dette ind, så man sikrer, at der er data i combo- og tekstboks:

If ComboBox1.Text = "" Then
MsgBox "Gl. Reg. nr. mangler!"
ComboBox1.SetFocus
Exit Sub
End If

If TextBox1.Text = "" Then
MsgBox "Nyt Reg. nr. mangler!"
TextBox1.SetFocus
Exit Sub
End If
Avatar billede supertekst Ekspert
21. november 2011 - 11:07 #22
Ja - man kan sørge for at der er - sæt MatchRequired = True
Avatar billede denero Juniormester
21. november 2011 - 11:18 #23
Så er det vist tid for et svar - tusind tak for hjælpen.
Avatar billede supertekst Ekspert
21. november 2011 - 11:38 #24
Selv tak - du får 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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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