PLZ ber Userform in Tabelle Schreiben Autom Vorwah

Hallo
ich bin leider totaler Anfänger was VBA angeht,
deshalb bitte ich um Eure Mithilfe.

Ich habe in einer Userform 2 Button. Einer heißt „OK Button“ der Andere
„CommandButton23“.Beide haben fast dieselbe Funktion, außer das der
„OK Button“ vorhandene Daten ändern und der „CommandButton23“ in die erste_freie_Zeile Schreiben soll. Underanderem wird in eine Spalte PLZ Zahlen eingetragen. Dadurch werden in angrenzenden Spalten, durch eine Formel, die Vorwahl und der Ort automatisch eingetragen.
Zu meinen Problem:
Das Funktioniert leider nur beim „CommandButton23“. Beim „OK Button“ wird nur die PLZ eingetragen, dadurch ensteht ein Fehlerwert in den angrenzenden Spalten, wo eigendlich die Vorwahl und der Ort automatisch eingetragen werden soll.

Ein Teil von meinem Code sieht so aus, was muß ich daran ändern damit er funktioniert?

Private Sub Aktualisieren()
'Anzeige Dialog aktualisieren
aZelle = ActiveCell.Row
TextBoxZeile.Text = TB.Cells(aZelle, 12)
ComboBox91.Text = TB.Cells(aZelle, 1)
ComboBox92.Text = TB.Cells(aZelle, 2)
ComboBox93.Text = TB.Cells(aZelle, 3)
ComboBox94.Text = TB.Cells(aZelle, 4)
ComboBox95.Text = TB.Cells(aZelle, 5)
ComboBox96.Text = TB.Cells(aZelle, 6)
ComboBox97.Text = TB.Cells(aZelle, 7)
ListBox11.Text = TB.Cells(aZelle, 8)
ComboBox98.Text = TB.Cells(aZelle, 9)
TextBox31.Text = TB.Cells(aZelle, 10)
TextBox32.Text = TB.Cells(aZelle, 11)
End Sub

Private Sub ScrollBar1_Change()
If Me.ScrollBar1.Value 1 Then
aktZeile = Me.ScrollBar1.Value

With Me
.TextBoxZeile = _
ActiveWorkbook.ActiveSheet.Cells(aktZeile, 12)
Öffentliche_Variable.Ze = _
ActiveWorkbook.ActiveSheet.Cells(aktZeile, 12)
.ComboBox91 = _
ActiveWorkbook.ActiveSheet.Cells(aktZeile, 1)
.ComboBox92 = _
ActiveWorkbook.ActiveSheet.Cells(aktZeile, 2)
.ComboBox93 = _
ActiveWorkbook.ActiveSheet.Cells(aktZeile, 3)
.ComboBox94 = _
ActiveWorkbook.ActiveSheet.Cells(aktZeile, 4)
.ComboBox95 = _
ActiveWorkbook.ActiveSheet.Cells(aktZeile, 5)
.ComboBox96 = _
ActiveWorkbook.ActiveSheet.Cells(aktZeile, 6)
.ComboBox97 = _
ActiveWorkbook.ActiveSheet.Cells(aktZeile, 7)
.ListBox11 = _
ActiveWorkbook.ActiveSheet.Cells(aktZeile, 8)
.ComboBox98 = _
ActiveWorkbook.ActiveSheet.Cells(aktZeile, 9)

.TextBox31 = _
ActiveWorkbook.ActiveSheet.Cells(aktZeile, 10)
.TextBox32 = _
ActiveWorkbook.ActiveSheet.Cells(aktZeile, 11)

End With
End If
End Sub

Private Sub CommandButtonok_Click() 'übernimmt aktuelle Anzeige
'Blattschutz aufheben
ActiveSheet.Unprotect
With ActiveWorkbook.ActiveSheet
ActiveWorkbook.ActiveSheet.Cells(aktZeile, 12) = Ze

ActiveWorkbook.ActiveSheet.Cells(aktZeile, 1) = Me.ComboBox91
ActiveWorkbook.ActiveSheet.Cells(aktZeile, 2) = Me.ComboBox92
ActiveWorkbook.ActiveSheet.Cells(aktZeile, 3) = Me.ComboBox93
ActiveWorkbook.ActiveSheet.Cells(aktZeile, 4) = Me.ComboBox94
ActiveWorkbook.ActiveSheet.Cells(aktZeile, 7) = Me.ComboBox97
ActiveWorkbook.ActiveSheet.Cells(aktZeile, 8) = Me.ListBox11
ActiveWorkbook.ActiveSheet.Cells(aktZeile, 9) = Me.ComboBox98
ActiveWorkbook.ActiveSheet.Cells(aktZeile, 10) = Me.TextBox31
ActiveWorkbook.ActiveSheet.Cells(aktZeile, 11) = Me.TextBox32
End With
'ScrollBar neu initialisieren
Dim Spaltenbereich As Range
Set Spaltenbereich = ActiveWorkbook.ActiveSheet _
.Range(„A2“).End(xlDown) '1.Spalte letzte Zelle
Me.ScrollBar1.Min = 1
Me.ScrollBar1.Max = Spaltenbereich.Row 'Nr.letzte Zeile
letzte_Zeile = Spaltenbereich.Row

'Blattschutz aktivieren
'ActiveSheet.Protect
'End With

End Sub

Private Sub CommandButton23_Click()
'Variable deklarieren
Dim erste_freie_Zeile As Integer
'Blattschutz aufheben
ActiveSheet.Unprotect
'erste freie Zeile in Blatt „ActiveWorkbook.ActiveSheet“ ermitteln
'und in Variable „erste_freie_Zeile“ schreiben
erste_freie_Zeile = ActiveWorkbook.ActiveSheet.Range(„A65536“).End(xlUp).Offset(1, 0).Row

ActiveWorkbook.ActiveSheet.Cells(erste_freie_Zeile, 1) = ComboBox91.Text

ActiveWorkbook.ActiveSheet.Cells(erste_freie_Zeile, 2) = ComboBox92.Text

ActiveWorkbook.ActiveSheet.Cells(erste_freie_Zeile, 3) = ComboBox93.Text
ActiveWorkbook.ActiveSheet.Cells(erste_freie_Zeile, 4) = ComboBox94.Text
ActiveWorkbook.ActiveSheet.Cells(erste_freie_Zeile, 7) = ComboBox97.Text
ActiveWorkbook.ActiveSheet.Cells(erste_freie_Zeile, 8) = ListBox11.Text
ActiveWorkbook.ActiveSheet.Cells(erste_freie_Zeile, 9) = ComboBox98.Text
ActiveWorkbook.ActiveSheet.Cells(erste_freie_Zeile, 10) = TextBox31.Text
ActiveWorkbook.ActiveSheet.Cells(erste_freie_Zeile, 11) = TextBox32.Text
ActiveWorkbook.ActiveSheet.Cells(erste_freie_Zeile, 12) = Ze

End Sub

Beim „CommandButton23“ funktioniert es Suber, woran könnte es liegen das es beim „OK Button“ nicht funktioniert?

Danke für eure Hilfe.

Hallo Alex,

auf den ersten Blick sehe ich schon vieles aber auf dein Problem bezogen erstmal nix.

Lade bitte mal eine aussagekräftige Beispielmappe hoch mit FAQ:2861 o.ä.

Du benutzt da z.B. globale Variablen wie ze usw.
Um dir helfen zu können muß man exakt wissen was in diesen Variablen drinsteht wenn die UF gestartet wird.

Nachbauen wird sicher keiner deiner UF.
Höchstwahrscheinlich findest du selbst den Fehler wenn du eine neue leere UF nimmst, dort paar Steuerelemente mit Standardnamen nimmst um den Fehler zu reprozudieren.

Wenn der Fehler weiter besteht so zeige den Code, es sind dann nur paar Klicks um deine UF nachzubauen und den Code auszutesten.

Gruß
Reinhard

Hallo Reinhard

Könnte ich sie dir wieleicht auch ber e-Mail Schicken?

Gruß Alex

Könnte ich sie dir wieleicht auch ber e-Mail Schicken?

Hallo Alex,

danke daß du nachfragst bebor du mailst.
Solange es sich in Grenzen hält sind mir Fremdmails egal.

Adererseits empfinde ich die dann als „zwingend“, das passt mir nicht so ganz.

Hier im Forum kann ich mir die Datei runterladen oder auch nicht, auf einen Beitrag antworten oder auch nicht.

Und im Sinne des Forums, auch des Archivs ist das auch nicht.

Lade sie also bitte hier hoch.

Daten zu anonymisieren geht doch ruckzuck.

Die Spalte A hat den Titel „Vornamen“, da schreibst du in A2: Vorn1 und kopierst das nach unten, das ergibt
Vornamen
Vorn1
Vorn2
Vorn3
usw

das Gleiche für Ort1, Nachname1 usw.

Bei geburtstagen schreibst du in X2 1.1.1980, dann in X3: =X2+ganzzahl(zufallszahl()*60)) und kopierst nach unten.

Durch Zufallszahl() kannst du auch Zahlenkolonnen aller Art erzeugen.

Anschließend dann Formelzellen markieren, Bearbeiten–Inhalte einfügen–Werte.

Dadurch hat man binnen weniger Minuten eine völlig anonyme Tabelle die aber, und das ist wichtig für potentielle helfer, die gleiche Struktur wie die Originaltabelle hat.

Soweit zum Datenschutz. Wenn du nun deinen Code nicht jedem zeigen willst, keine Panik, auch Rainer wußte früher nicht wie man „hello world“ auf den Bildschirm zaubert :smile:)

Gruß
Reinhard

Sorry Reinhard, daß ich jetzt erst zum Antworten komme.

Es geht nicht wegen anonymisieren, sondern wie ich die Datei ins Internet bekomme.
Ich glaube ich habe es doch geschaft?

http://rapidshare.com/files/200951974/Adressbuch_Tes…

Gruß Alex

Es geht nicht wegen anonymisieren, sondern wie ich die Datei
ins Internet bekomme.
Ich glaube ich habe es doch geschaft?

Hallo Alex,

dann hilf uns doch bitte die FAQ bzw. Anweisungen darin zu verbessern.
Was genau war kompliziert? Was könnte in der FAQ deiner Meinung nach verbessert werden.

Deine Datei schau ich mir morgen an, bin müd.

Gruß
Reinhard

Hallo Reinhard

OK Danke für deine bemühungen.

Gruß Alex

http://rapidshare.com/files/200951974/Adressbuch_Tes…

Hallo Alex,

zu deinem Problem kam ich noch gar nicht.
Eine 8 MB Mappe muß man erst mal durchschauen.

Wenn ich da auf diesen CommandButtonOK klicke kommt ein Fehler bei
ActiveWorkbook.ActiveSheet.Cells(aktZeile, 1) = Me.ComboBox91
weil aktZeile in dem Moment den Wert 0 hat und Zeile 0 mag Excel gar nicht.

Und wie ich sehe hast du ja schon die With-Schleife drumgelegt, dann benutze sie auch, also so:
With ActiveWorkbook.ActiveSheet
.Cells(aktZeile, 1) = Me.ComboBox91

Ich persönlich benutze „Me“ nahezu nie, sicher schön kurz u.v.m., ich mags nicht, irgendwie weiß ich beim Codelesen nie so genau was sich dahinter verbirgt, aber okay, das ist sehr meine rein persönliche Ansicht.

Wenn du „ActiveWorkbook.ActiveSheet“ im Code benutzt mußt du unbedingt dafür sorgen daß im Moment des Buttons-Drücken garantiert kein „falsches“ Blatt sichtbar=aktiv ist.
Und natürlich daß in dem Moment aktZelle nicht 0 ist

„ComboBox91“ ist sehr schlecht. Schau dir mal deinen Code an dem du jetzt die letzten Tage täglich gearbeitest hast mal in 2 Wochen an, du stehst davor wie ich, who the f is alice,:smile:

Also mache es dir leichter, benutze sprechende Namen.
Teilweise hast du ja schon angefangen, weiter so.
Private Sub CommandButtonok_Click()
ist ja schon ein guter Ansatz.
Private Sub CmdBOK_Click()
kürzer und genauso aussgaekräftig.

Schau mal nach „ungarischer Notation“ bei Wikipedia, Google.

Ich habe deine Mappe leicht manipuliert und in den meisten Blaettern die Sverweis-Formeln rausgeworfen, wenn du sowieso Vba benutzt braucht man die nicht.
Noch habe ich den Sinn deiner Mappe nicht völlig verstanden um Code zu basteln der die Formeln ersetzt.
Nachstehend der Code mit dem ich sie entfernt habe. Aus Schnelligkeitsgründen (Excelformeln sind schneller als Vba) werden da die Formeln kurz eingetragen dann durch ihre Ergenisse ersetzt, das geht ruckzuck.

So oder so, sie waren nicht korrekt, du mußt den Suchbereich im Blatt „Daten 2“ absolut machen und nicht relativ.

Markiere in den meisten Blättern zeile 2 dann Fenster–Fixieren.

Achja, ich habe auch in den Blaetter was geändert wo du ein Schutzkennwort vergeben hattest.
Mich kostete es zwar nur paar Klicks um es zu entfernen, aber solange die mappe noch in der testphase ist lasse es weg oder schreibe es ins Blatt.
In den Codes kannst du es ja schon vorbereiten mit protect, unprotect, aber erstmal nur auskommentiert.

Achja, das Bundesland heißt SchleSwig-Holstein :smile:

So, das wars fürs erste, muß mal schauen ob ich mich heute mal näher an den Grund deiner Anfrage herantasten kann oder wieder verzettel*gg*

Gruß
Reinhard

Sub Einmalig()
Dim Zei As Long, wks As Worksheet, Blaetter, B As Integer, Nein As Boolean
Dim Formel As String, F As String
Blaetter = Array("Suche", "Daten 2", "Daten 3", "Daten")
For Each wks In ThisWorkbook.Worksheets
 Nein = False
 For B = 0 To UBound(Blaetter)
 If wks.Name = Blaetter(B) Then
 Nein = True
 Exit For
 End If
 Next B
 If Nein = False Then
 Zei = wks.Cells(Rows.Count, 4).End(xlUp).Row
 wks.Range("E2:F" & Rows.Count).ClearContents
 wks.Range("E2:F" & Rows.Count).NumberFormat = "General"
 F = "SVERWEIS($D2;'Daten 2'!$A:blush:C;SPALTE()-3;FALSCH)"
 Formel = "=WENN(ISTFEHLER(" & F & ");"""";" & F & ")"
 If Zei \> 1 Then wks.Range("E2:F" & Zei).FormulaLocal = Formel
 wks.Range("E2:F" & Zei).Value = wks.Range("E2:F" & Zei).Value
 End If
Next wks
End Sub

PLZ ber Userform in Tabelle Schreiben
Hallo

weiß jemand zufällig wie ich den jetzigen Code umschreibe,
er soll bewirken dass ich per Userform Daten in der Tabelle ändern kann. Es würde zwar mit diesen Code auch Funktionieren, aber
ich habe einen S Verweis in der Tabelle stehen der mir mit diesen Code #NV anzeigt.
Ich habe noch einen anderen Button auf meiner Userform der die Daten nicht ändern, sondern in die nächste leere Zeile schreibt, da Funktioniert der S Verweis in der Tabelle.

Hier mein Code:

Private Sub CommandButtonok_Click() 'übernimmt aktuelle Anzeige
we = Me.ScrollBar1.Value
Me.TextBoxZeile = we
Cells(we, 1) = Me.ComboBox91
Cells(we, 2) = Me.ComboBox92
Cells(we, 3) = Me.ComboBox93
Cells(we, 4) = Me.ComboBox94
Cells(we, 7) = Me.ComboBox97
Cells(we, 8) = Me.ListBox11
Cells(we, 9) = Me.ComboBox98
Cells(we, 10) = Me.TextBox31
Cells(we, 11) = Me.TextBox32
End Sub

Vielen Dank für eure hilfe.