Gå til innhold

[Løst] Combobox


Anbefalte innlegg

Hei hei.

Kjører Office 2010 (jobb) og Office 365 (hjemme)

 

Jeg har en Combobox1 som henter informasjon fra N3:N1000 (Kunderegister) og kjører

følgende makro:

 

Private Sub ComboBox1_Change()
  ActiveCell.Value = Range(ActiveSheet.Shapes("ComboBox1") _
                        .DrawingObject.LinkedCell).Value
End Sub
 
Dette fungerer men gir betydelig fare for feilplassering av navn.
 

Det jeg ønsker er og klikke i første ledige celle i kolonne B3:B1000 for og få inn dataene (navnet fra kundelisten) fra ComboBox1. Etter valg av navn skal Combobox1 resettes. 

 

Har prøvd og prøvd men får ikke dette til

Noen som kan være så snill og hjelpe meg med dette?

 

Ha en fin kveld

 

Mvh

Rolf Arne

 

Lenke til kommentar
Videoannonse
Annonse

Hei på deg.

Koden under vil plassere verdien i første ledige rad i kolonnen du angir.

Virker skummelt på meg hvis brukeren skriver i tekstfeltet, siden ComboBox1_Change() kalles opp ved første match selv om du har MatchRequired satt til True?

 

 

Private Sub ComboBox1_Change()
 Dim Kolonne As Long
 Kolonne = 1
 
 With ActiveSheet
   x = 1: While .Cells(x, Kolonne) <> ""
   x = x + 1: Wend
   .Cells(x, Kolonne) = .ComboBox1.Text
   .ComboBox1.Text = ""
 End With
End Sub
Lenke til kommentar

Hei og tusen takk for svar  :)

Var ikke helt sånn jeg tenkte, skal prøve og forklare litt bedre.

 

Jeg har en kundeliste med kundens navn i N3:N1000.

Jeg vil plukke navn fra denne listen ved hjelp av en søkeboks (ComboBox1)

Når jeg velger for eksempel celle B10 og søker opp kunden i ComboBox1 kommer det opp en liste med 8 navn (ListRows8)

Når jeg klikker på navnet jeg ønsker, skal dette komme i celle B10 og markøren flytter seg til B11. ComboBox1 skal resettes for nytt søk.

 

Kan hende det er andre og bedre måter og gjøre dette på så kom gjerne med forslag  :)

 

Legger ved ett bilde av regnearket, håper det vart litt mer forståelig hva jeg mener  :huh:

 

På forhånd takk

 

post-405959-0-14533800-1467148414_thumb.png

Lenke til kommentar

Hei.

 

Dette skal fungere.

 

Koden må legges inn på selve arket (objektet).

På venstre side av der du skriver makroene dine har du en liste over alle arkene i arbeidsboken din. velg det aktuelle arket og lim inn koden der.

 

Hvis du da dobbeltklikker på navnet i listen vil navnet bli fylt inn i første tomme celle i kolonne B.

Har satt listen til å være B2:B9. kan evt. gjøres om til en dynamisk Range.

 

Hvis du får det til å fungere kan du sikkert vente litt med å sette tråden til løst, da ExcelGuru er noe stødigere på dette enn meg og kanskje har en bedre løsning.

 

 

 

Option Explicit
Private Sub worksheet_BeforeDoubleClick(ByVal target As Range, cancel As Boolean)
    
    Dim sisteRad As Long, NavnetDuVelger As String
    
    If Not Application.Intersect(target, Range("B2:B9")) Is Nothing Then
        NavnetDuVelger = target.Value
        cancel = True
    End If
    
    sisteRad = Sheets(1).Cells(Rows.Count, "B").End(xlUp).Row
    
    Sheets(1).Cells(sisteRad + 1, 2).Value = NavnetDuVelger
    ComboBox1.Text = ""

End Sub
 

 

Mvh

 

Torbjørn

Lenke til kommentar

Hei.

 

Dette skal fungere.

 

Koden må legges inn på selve arket (objektet).

På venstre side av der du skriver makroene dine har du en liste over alle arkene i arbeidsboken din. velg det aktuelle arket og lim inn koden der.

 

Hvis du da dobbeltklikker på navnet i listen vil navnet bli fylt inn i første tomme celle i kolonne B.

Har satt listen til å være B2:B9. kan evt. gjøres om til en dynamisk Range.

 

Hvis du får det til å fungere kan du sikkert vente litt med å sette tråden til løst, da ExcelGuru er noe stødigere på dette enn meg og kanskje har en bedre løsning.

Option Explicit
Private Sub worksheet_BeforeDoubleClick(ByVal target As Range, cancel As Boolean)
    
    Dim sisteRad As Long, NavnetDuVelger As String
    
    If Not Application.Intersect(target, Range("B2:B9")) Is Nothing Then
        NavnetDuVelger = target.Value
        cancel = True
    End If
    
    sisteRad = Sheets(1).Cells(Rows.Count, "B").End(xlUp).Row
    
    Sheets(1).Cells(sisteRad + 1, 2).Value = NavnetDuVelger
    ComboBox1.Text = ""

End Sub
 

Mvh

 

Torbjørn

Hei, driver og prøver og prøver men ikke så lett for en trelkrok  :hmm:

Skal makroen som jeg hadde ComboBox1 fjernes og erstattes med din?

Eller skal jeg slette den og sette den inn en ny Module på Ark1?

 

Rekker ikke mer nå men skal se på det igjen senere i kveld.

Tusen takk så langt

Lenke til kommentar

 

Hei.

 

Dette skal fungere.

 

Koden må legges inn på selve arket (objektet).

På venstre side av der du skriver makroene dine har du en liste over alle arkene i arbeidsboken din. velg det aktuelle arket og lim inn koden der.

 

Hvis du da dobbeltklikker på navnet i listen vil navnet bli fylt inn i første tomme celle i kolonne B.

Har satt listen til å være B2:B9. kan evt. gjøres om til en dynamisk Range.

 

Hvis du får det til å fungere kan du sikkert vente litt med å sette tråden til løst, da ExcelGuru er noe stødigere på dette enn meg og kanskje har en bedre løsning.

Option Explicit
Private Sub worksheet_BeforeDoubleClick(ByVal target As Range, cancel As Boolean)
    
    Dim sisteRad As Long, NavnetDuVelger As String
    
    If Not Application.Intersect(target, Range("B2:B9")) Is Nothing Then
        NavnetDuVelger = target.Value
        cancel = True
    End If
    
    sisteRad = Sheets(1).Cells(Rows.Count, "B").End(xlUp).Row
    
    Sheets(1).Cells(sisteRad + 1, 2).Value = NavnetDuVelger
    ComboBox1.Text = ""

End Sub
 

Mvh

 

Torbjørn

Hei, driver og prøver og prøver men ikke så lett for en trelkrok  :hmm:

Skal makroen som jeg hadde ComboBox1 fjernes og erstattes med din?

Eller skal jeg slette den og sette den inn en ny Module på Ark1?

 

Rekker ikke mer nå men skal se på det igjen senere i kveld.

Tusen takk så langt

 

Hei igjen, dette fungerer det :)  :) men forsatt ikke som jeg ønsker  :huh:

 

Som vedlagt bilde i starten har jeg kundeliste med kundens navn i N3:N1000 (som kommer fra kommer fra ark 2)

Jeg ønsker og søke opp kundene (for og slippe og bla igjennom en liste på 1000 navn hvert år) fra denne listen (N3:N1000) og få valgt navn i første ledige celle i B3:B1000

 

Ved ny sesong slettes alle data i B3:B1000 (dette fungerer via knappen "Nullstille ved nytt år"

 

Håper dette var litt oppklarende 

 

God natt  :)

Lenke til kommentar

Har du testet med ctrl + b (søkefunksjon i Excel) ?

Ja har gjort det men får ikke det jeg ønsker  :hm:

Får bruke datavalidering så lenge. Men gir meg ikke før jeg finner en løsning og tar gjerne mot flere tips  :)

Combobox1 gir som bilde viser bare 8 rader og velge fra (den søker i N3:N1000) og er betydelig raskere og finne navn. Ved og klikke på ønsket navn kommer det i valgt celle.

Fungerer med denne makroen,

 

Private Sub ComboBox1_Change()

  ActiveCell.Value = Range(ActiveSheet.Shapes("ComboBox1") _

                        .DrawingObject.LinkedCell).Value

End Sub

 

men som sagt gir den rom for feil jeg ikke ønsker  :hmm:

Lett og velge feil celle, og Combobox1 nulstiller seg ikke etter søk 

 

Det som er moro med excel er at som regel finnes det en løsning på alt  :)  :)

post-405959-0-74459400-1467272871_thumb.jpg

Lenke til kommentar
Beklager. fikk ikke sletta svaret. hadde en kode her, men etter litt testing viste det seg at den var full av feil  

Hm ikke lett dette, denne fører til at for hver bokstav jeg skriver i ComboBox1 kommer det opp navn i ny celle hver gang.

 

Skal ha bare ett navn. Hvis jeg skriver for eks bj i boksen skal alle navn som starter på bj komme opp. Når jeg klikker på for eksempel Bjørn skal denne kunden komme i første ledige celle i kolonne B og ComboBox1 resetes til nytt søk

Lenke til kommentar

Ja.

 

Problemet er at hver gang du skriver inn en bokstav eller fjerner en bokstav vil du trigge en change, som ber makroen om å gå til neste celle.

 

Dette er nok den beste løsningen jeg kan komme med. Sett Linkedcell til F.eks. K8. Når verdien av K8 blir navnet du søker dobbeltklikker du på K8. (har valgt K8 fordi den er rett under comboboxen din. Du kan sette den til hvilken celle du vil)

 

 

Option Explicit
Private Sub worksheet_BeforeDoubleClick(ByVal target As Range, cancel As Boolean)
    
    Dim sisteRad As Long, NavnetDuVelger As String
    
    If Not Application.Intersect(target, Range("K8")) Is Nothing Then
        NavnetDuVelger = target.Value
        cancel = True
    End If
    
    sisteRad = Sheets(1).Cells(Rows.Count, "B").End(xlUp).Row
    
    Sheets(1).Cells(sisteRad + 1, 2).Value = NavnetDuVelger
    ComboBox1.Text = ""

End Sub
 
Lenke til kommentar

 

Ja.

 

Problemet er at hver gang du skriver inn en bokstav eller fjerner en bokstav vil du trigge en change, som ber makroen om å gå til neste celle.

 

Dette er nok den beste løsningen jeg kan komme med. Sett Linkedcell til F.eks. K8. Når verdien av K8 blir navnet du søker dobbeltklikker du på K8. (har valgt K8 fordi den er rett under comboboxen din. Du kan sette den til hvilken celle du vil)

Option Explicit
Private Sub worksheet_BeforeDoubleClick(ByVal target As Range, cancel As Boolean)
    
    Dim sisteRad As Long, NavnetDuVelger As String
    
    If Not Application.Intersect(target, Range("K8")) Is Nothing Then
        NavnetDuVelger = target.Value
        cancel = True
    End If
    
    sisteRad = Sheets(1).Cells(Rows.Count, "B").End(xlUp).Row
    
    Sheets(1).Cells(sisteRad + 1, 2).Value = NavnetDuVelger
    ComboBox1.Text = ""

End Sub
 

Tusen takk for svar, skal se mer på dette etterhvert  :)

Setter den ikke som løst foreløpig 

Lenke til kommentar

Hei og hei

Det ble litt fristende å komme med et forslag...

Her popper det opp en liten boks når du klikker i B-kolonnen.

Når du skriver i tekstboksen, vises alle navn som inneholder bokstavene du skriver.

Når du klikker og taster enter evt klikker OK, settes navnet inn i listen på første ledige rad.

Når et navn er valgt, settes en "x" til venstre for navnet i kundelisten slik at den ikke kommer opp i listboksen neste gang du søker.

Denne kolonnen ("M" i eksemplet) må du slette når du nullstiller arket.

Det er over 1000 navn i listen så du kan se om hastigheten blir ok.

 

http://www.excelguru.no/download/2473/

 

Vennlig hilsen Ketil

Lenke til kommentar

Hei og hei

Det ble litt fristende å komme med et forslag...

Her popper det opp en liten boks når du klikker i B-kolonnen.

Når du skriver i tekstboksen, vises alle navn som inneholder bokstavene du skriver.

Når du klikker og taster enter evt klikker OK, settes navnet inn i listen på første ledige rad.

Når et navn er valgt, settes en "x" til venstre for navnet i kundelisten slik at den ikke kommer opp i listboksen neste gang du søker.

Denne kolonnen ("M" i eksemplet) må du slette når du nullstiller arket.

Det er over 1000 navn i listen så du kan se om hastigheten blir ok.

 

http://www.excelguru.no/download/2473/

 

Vennlig hilsen Ketil

Hei hei, ved første øyekast ser bare dette rått ut. Skal bygge det inn i mitt regneark og se mer på det iløpet av helga.  :)  :)  :)  Når jeg har fått gjort det kommer jeg tilbake med full rapport.

Stor takk til Torbjørn også  :)

Lenke til kommentar

 

Hei og hei

Det ble litt fristende å komme med et forslag...

Her popper det opp en liten boks når du klikker i B-kolonnen.

Når du skriver i tekstboksen, vises alle navn som inneholder bokstavene du skriver.

Når du klikker og taster enter evt klikker OK, settes navnet inn i listen på første ledige rad.

Når et navn er valgt, settes en "x" til venstre for navnet i kundelisten slik at den ikke kommer opp i listboksen neste gang du søker.

Denne kolonnen ("M" i eksemplet) må du slette når du nullstiller arket.

Det er over 1000 navn i listen så du kan se om hastigheten blir ok.

 

http://www.excelguru.no/download/2473/

 

Vennlig hilsen Ketil

Hei hei, ved første øyekast ser bare dette rått ut. Skal bygge det inn i mitt regneark og se mer på det iløpet av helga.  :)  :)  :)  Når jeg har fått gjort det kommer jeg tilbake med full rapport.

Stor takk til Torbjørn også  :)

 

Hei igjen  :)

Bare ett lite spørsmål, hva hvis man klikker OK men opptager at det var feil navn  :hmm:

Ellers funker dette helt topp, har lagt til en CommandButton til som åpner for registrering av ny kunde. Dette blir sååååå bra med god hjelp fra deg / dere.

 

Ha en fin kveld.

 

RA

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...