Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen

Makro bei Enter

Betrifft: Makro bei Enter von: Birkel
Geschrieben am: 12.08.2004 17:25:14

Hallo,
ich habe in einer Datei ein Feld, in dem eine PLZ eingegeben wird.
Jetzt möchte ich, dass in dem Feld daneben automatisch die Stadt erscheint,
wenn man die PLZ eingegeben hat und ENTER drückt.
Ist das möglich?
Vielen Dank für die Hilfe.
MfG
Birkel

  


Betrifft: AW: Makro bei Enter von: Ramses
Geschrieben am: 12.08.2004 17:37:58

Hallo

Zaubern kann EXCEL nicht, irgendwo müssen die PLZ und die Ortsnamen natürlich schon stehen, ansonsten geht das mit SVERWEIS()

Tabelle1
 ABCDE
1EingabeErgebnis Daten 
21000Berlin 1000Berlin
3   8000München
4     
Formeln der Tabelle
B2 : =SVERWEIS(A2;D2:E3;2;0)
 




Gruss Rainer


  


Betrifft: AW: Makro bei Enter von: Birkel
Geschrieben am: 12.08.2004 17:53:43

Hallo Rainer,
die Daten stehen in einer Datei mit Stammdaten und das mit dem sverweis weiß ich
schon. Aber ich will, dass das Feld leer ist, in dem der Ort steht, damit der User
dass dann auch ändern kann ohne das die Formel weg ist.
Man müßte da über VBA gehen, und so weit ich weiß, gibt es da auch irgend einen
Code. Aber wie der lautet weiß ich nicht und die VBA-Hilfe hilft mir auch nicht weiter.

MfG
Birkel


  


Betrifft: AW: Makro bei Enter von: Ramses
Geschrieben am: 12.08.2004 19:37:42

Hallo

Nimm das mal als Beispiel

Das Makro wird ausgeführt wenn in Zelle A2 etwas geändert wurde:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim seekWks As Worksheet, curWks As Worksheet
Dim seekOK As Boolean
Set curWks = Worksheets(ActiveSheet.Name)
Set seekWks = Worksheets("PLZ-Tabelle")
seekOK = False
If Target.Address(False, False) <> "A2" Then Exit Sub
On Error GoTo findError
curWks.Range("B2") = Application.WorksheetFunction.VLookup(Target, seekWks.Range("A:B"), 2, 0)
Exit Sub

findError:
curWks.Range("B2") = "Not found"
Exit Sub
End Sub


Der Code muss in das Klassenmodul der Tabelle wo die Eingabe erfolgen soll.
Blattregister - Rechte Maustaste - Code anzeigen

Dort hin kopieren. Die Variablen musst du halt entsprechend anpassen

Gruss Rainer


  


Betrifft: AW: Makro bei Enter von: ChrisL
Geschrieben am: 12.08.2004 18:32:27

Hi Birkel

Was wenn es für die selbe PLZ mehrere Ortschaften gibt? Ich weiss nicht wie es mit Deutschland steht, aber in der Schweiz ist es nicht unüblich. Vermutlich braucht es noch eine Auswahl z.B. mit Userform und ListBox oder wie siehst du das.

Birkel-Grurken (oder wie war das) gibts aber glaub nur in Deutschland oder? ;-)

N.b. für CH hätte ich noch ein PLZ/Ort Verzeichnis.

Gruss
Chris


  


Betrifft: AW: Makro bei Enter von: Birkel
Geschrieben am: 12.08.2004 19:22:35

Hallo Chris,
habe auch schon ein PLZ-Verzeichnis für CH. Und das mit den doppelten hab ich auch schon gesehen, aber das ist kein Problem, der User soll ja das Feld ändern können. Die Stadt soll nur ein Vorschlag sein,aber das mit der ListBox ist keine schlechte Idee.
Hast du ne Ahnung, wie man das machen könnte? Weil wenn in dem Feld ne Formel steht und der User dann was eintippt, ist die Formel weg und das ist schlecht.

MfG
Birkel

P.S. Es ist die Birkel-Nudel.


  


Betrifft: PLZ / Ort Auswahl von: ChrisL
Geschrieben am: 12.08.2004 19:57:37

Hi Birkel (-Nudel)

https://www.herber.de/bbs/user/9570.xls

Viel Spass
Chris


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$2" Then
    
    Dim Anzahl As Byte
    Dim WS1 As Worksheet
    Dim WS2 As Worksheet
    Set WS1 = Worksheets("Tabelle1")
    Set WS2 = Worksheets("Tabelle2")
    
    Select Case WorksheetFunction.CountIf(WS2.Columns(1), Target)
    
        Case 0: Exit Sub
    
        Case 1
            WS1.Range("B2") = WS2.Cells(WorksheetFunction.Match(Target, WS2.Columns(1), 0), 2)
    
        Case Else
            Load UserForm1
            UserForm1.Show
        
    End Select
    
End If
End Sub



Private Sub CommandButton1_Click()
Worksheets("Tabelle1").Range("B2") = ListBox1
Unload UserForm1
End Sub


Private Sub CommandButton2_Click()
Unload UserForm1
End Sub


Private Sub ListBox1_Click()
CommandButton1.Enabled = True
End Sub


Private Sub UserForm_Initialize()
Dim WS1 As Worksheet, WS2 As Worksheet
Dim iZeile As Long


Set WS1 = Worksheets("Tabelle1")
Set WS2 = Worksheets("Tabelle2")

iZeile = WorksheetFunction.Match(WS1.Range("A2"), WS2.Columns(1), 0)
Do Until WS2.Cells(iZeile, 1) <> WS1.Range("A2")
    ListBox1.AddItem WS2.Cells(iZeile, 2)
    iZeile = iZeile + 1
Loop
End Sub



  


Betrifft: AW: PLZ / Ort Auswahl von: Birkel
Geschrieben am: 13.08.2004 17:21:33

Hallo Chris,
danke klappt wunderbar.
MfG
Birkel(-Nudel)