Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
764to768
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
764to768
764to768
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Eingabe nach 5 Stellen

Eingabe nach 5 Stellen
17.05.2006 16:27:28
Heinz H
Hallo Leute
Bin schon am verzweifeln.
Habe letzte Woche Fehler schon beschrieben.
Aber durch meine Unkentnisse in VBA habe ich es nicht hinbekommen.
Habe ein Pogramm, das mir nach Eingabe einer 5 stelligen SAP Nummer das dazugehörige externe Blatt öffnet.
Nur wird das externe Blatt aber schon nach Eingebe 1 Stelle geöffnet.
Das sollte nicht sein.
Erst nach Eingabe der 5 ten Stelle.
Kann leider nicht hochladen ist fast 700 KB groß.
Könnte mir BITTE nochmals jemand dabei helfen ??
Danke & Gruss Heinz
' SAP ändern ----------------------------------------------------------------

Private Sub cmbSAP_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = KeyCheck(KeyAscii, cmbSAP, NurZahlen, False, False)
End Sub

25
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eingabe nach 5 Stellen
17.05.2006 16:36:01
blue
Hi,
Es tut mir leid aber dabei kann ich dir auch nicht helfen.
Ich wollte dir lediglich den Tipp geben die Datei an einen gezippten Ordner zu senden
dann kannst du sie auch hochladen(rechtsklick/senden an/ZIP-komprimierten Ordner)
dann können dir die dies können auch besser helfen.
mfg Yannik
AW: Eingabe nach 5 Stellen
17.05.2006 16:48:52
Heinz H
Hallo Yannik
Danke für Deine Antwort.
Aber im gezippten Zustand ist die Datei leider auch noch 600 KB groß und ich bringe sie nicht kleiner.
Gruss Heinz
AW: Eingabe nach 5 Stellen
17.05.2006 16:56:56
Andi
Hi,
die Mappe zu kennen wäre in der Tat ned schlecht, aber ich schiess jetz trotzdem mal ins Blaue:
kann es sein, dass die SAP-Nummer in ne TextBox eingegeben wird? Und dass Du das entsprechende Blatt über das Change-Ereignis der TextBox öffnest?
Das Change-Ereignis wird bei TextBoxen (im Gegensatz zu Zellen) nämlich bei jeden Tastendruck ausgelöst, nicht erst wenn die Eingabe abgeschlossen wird.
Sollte ich damit richtig liegen, dann verwende das LostFocus-Ereignis (wenn die TextBox in ner Tabelle ist) oder das Exit-Ereignis (wenn die TextBox in nem UserForm ist).
Alternativ, wenn Du nicht extra nen Button drücken willst, kannst Du auch noch im Click-Ereignis mit
Len(TextBox1.Value)
prüfen, wieviele Ziffern schon eingegeben wurden, und eben erst bei
Len(TextBox1.Value) = 5
das Blatt öffnen.
Wenn's das nicht war: Mappe zippen oder auf das wesentliche abspecken und hochladen.
Schönen Gruß,
Andi
Anzeige
partieller Blödsinn....
17.05.2006 17:01:02
Andi
Hi nochmal,
Du must natürlich keinen Button drücken, um Exit oder LostFocus auszulösen; irgendwo außerhalb der textbox klicken reicht.
Außerdem gehört die Len-Abfrage natürlich nicht ins Click- sondern ins Change-Ereignis.
Der Rest stimmt aber...
Schönen Gruß,
Andi
AW: Eingabe nach 5 Stellen
17.05.2006 17:10:55
Heinz H
Hallo Andi
Danke für Deine Hilfe
Du liegst absolut richtig.
Ja die SAP Nummern werden in einer Textbox in User Form eingegeben.
Nur sind meine VBA Kenntnisse fast NULL.
Habe die Datei auch schon probiert abzuspecken.
Dürfte ich sie Dir eventuell über mail senden ??
Danke & Gruss Heinz
Anzeige
AW: Eingabe nach 5 Stellen
17.05.2006 17:18:41
Andi
Hi,
das dürftest Du schon, allerdings is dann irgendwann jemand enttäuscht, der das gleiche Problem hat und im Archiv auf diesen thread stößt; lass uns also versuchen, das gemeinsam hier zu lösen.
Kopiere doch mal den Code vom Change-Ereignis Deiner TextBox hier rein.
Und welche Variante hättest Du denn gern? Soll das Blatt automatisch geöffnet werden, wenn die 5. Ziffer eingetippt wurde, oder soll der User zuvor noch nen Button drücken oder zumindest die TextBox verlassen?
Schönen Gruß,
Andi
P.S.: Ich bin nur noch ne halbe Stunde hier, könnte also sein, dass ich erst morgen wieder antworte. Ich schau auf jeden Fall wieder rein...
Anzeige
AW: Eingabe nach 5 Stellen
17.05.2006 17:29:44
Heinz H
Hallo Andi
Habe jetzt mal den ganzen Code von der Userform reinkopiert.
Danke für Deine Hilfe
Heinz

Private Sub UserForm_Initialize()
Dim t As Date
' Pfad, wo sich die SAP_Dateien befinden
'strPfad = "F:\Vetropack\Packanweisungen\"
'  strPfad = "C:\Documents and Settings\Etiprint\Desktop\Eigene Dateien\Vetropack\Womat.2000\PACKANWEISUNGEN\"
strPfad = "C:\Dokumente und Einstellungen\Holzmann\Desktop\Womat\PACKANWEISUNGEN\"
With UF
.MaxButton = True: .MinButton = True
.BorderStyle = xlÄnderbar
.Create UserForm1
End With
' SAP-Nummern einlesen
Call DATEILISTE_SAP(strPfad)
' Werte aus SAP-Datei
Call DATEN_aus_SAP
cmbSAP.SetFocus
End Sub

' SAP ändern ----------------------------------------------------------------

Private Sub cmbSAP_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = KeyCheck(KeyAscii, cmbSAP, NurZahlen, False, False)
End Sub


Private Sub txtBedarf_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error GoTo errHandle
Bedarf = CInt(txtBedarf)
Call BERECHNUNG_sinnvoll
Exit Sub
errHandle: Bedarf = 0
End Sub

'---------------------------------------------------------------------------
' Ordner für SAP-Dateien

Private Sub labOrdner_Click()
Call Funktionen.FunktionGetDirectory("Ordner der SAP-Dateien auswählen")
End Sub

Sub DATEN_aus_SAP()
Dim ext_SAP As Object
Dim TMP$, TMP1$
' externe Tabelle lt. SAP-Nummer
On Error GoTo errHandle
' Set ext_SAP = GetObject(strPfad & SAPDateien(cmbSAP.ListIndex) & ".xls")
Set ext_SAP = GetObject(strPfad & cmbSAP.Text & ".xls")
SAP_ok = True
' Daten aus SAP-Dateien
With ext_SAP.Sheets(1)
TMP = vbNullString
For n = 4 To 13
TMP1 = Trim(.Cells(53, n).Text): If Len(TMP1) <> 0 Then TMP = TMP & " " & TMP1
Next n
ANMERKUNG1 = TMP
TMP = vbNullString
For n = 1 To 13
TMP1 = Trim(.Cells(54, n).Text): If Len(TMP1) <> 0 Then TMP = TMP & " " & TMP1
Next n
ANMERKUNG2 = TMP
TMP = vbNullString
For n = 1 To 13
TMP1 = Trim(.Cells(55, n).Text): If Len(TMP1) <> 0 Then TMP = TMP & " " & TMP1
Next n
ANMERKUNG3 = TMP
End With
ext_SAP.Close
Set ext_SAP = Nothing
Exit Sub
errHandle:
Set ext_SAP = Nothing
SAP_ok = False
Dim txtBox
For Each txtBox In UserForm1.frmDaten.Controls
If TypeName(txtBox) = "TextBox" Then txtBox.Text = vbNullString
Next txtBox
End Sub

Private Sub cmdEnde_Click()
Unload UserForm1
End Sub

' EFFEKTE ----------------------------------------------------------------

Private Sub frmSteuerung_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal Y As Single)
For n = 0 To 4
varButton(n).butGroup.BackColor = &HFFDAA6
varButton(n).butGroup.ForeColor = &H80000012
varButton(n).butGroup.Font.Bold = False
Next n
End Sub

Anzeige
AW: Eingabe nach 5 Stellen
18.05.2006 11:03:59
Andi
Hi,
in welches Steuerelemet wird denn die SAP-Nummer eingegeben?
Die einzige im Code als solche erkennbare TextBox scheint mir txtBedarf zu sein; in dem Fall wird das gewünschte Blatt wahrscheinlich in der sub BERECHNUNG_sinnvoll geöffnet, oder? Deren Code wäre dann auch interessant.
Auf jeden Fall muss die Variable Bedarf in einem Standard-Modul als public deklariert sein, sonst kannst Du sie außerhalb von txtBedarf_Exit nicht verwenden.
Welches Format haben denn Deine SAP-Nummern? Nur Ziffern? Oder kommen da evtl auch Punkte oder Kommas drin vor?
Schönen Gruß,
Andi
Anzeige
AW: Eingabe nach 5 Stellen
18.05.2006 14:11:43
Heinz H
Hallo Andi
Also meine SAP Nummern sind nur Zahlen ohne punkt und Komma. Zb.12345
Werde noch nach den anderen Code Suchen.
Danke Heinz
AW: Eingabe nach 5 Stellen
18.05.2006 14:18:05
Heinz H
Hallo Andi
Die SAP Nummern werden in eine ComboBox eingegeben.
Hoffe das ist der Code den Du gemeint hast.
Gruss Heinz

Private Sub cmbSAP_change()
On Error Resume Next ''
Select Case Len(cmbSAP)
Case 5
If Not IsNumeric(cmbSAP) Then
cmbSAP = "" ''Versuch
Else
SAP = CLng(cmbSAP.Text)
Call DATEN_aus_SAP
If SAP_ok = True Then Call Daten_in_FORM
End If
End Select
End Sub

AW: Eingabe nach 5 Stellen
18.05.2006 14:31:40
Andi
Hi,
ich nehme mal an, dass in der ComboBox eine Liste mit allen SAP-Nummern enthalten ist; wenn Du jetzt die Nummer nicht per DropDown auswählst, sondern anfängst zu tippen, dann passieren zwei Dinge:
- die Eingabe wird auf den ersten passenden Eintrag in der Liste vervollständigt, also auf die kleinste Nummer, die mit der eingegebenen Ziffer anfängt
- das Change-Ereignis wird ausgelöst.
Wenn Du also aus dem Change-Ereignis heraus das entsprechende Blatt aufrufen möchtest, dann wirst Du, solange zB eine Nummer 10000 existiert, niemals das Blatt 10001 aufrufen können, weil bei einer Eingabe von 1 immer gleich auf 10000 vervollständigt wird.
Verwende deshalb das Exit-Ereignis der ComboBox.
Schönen Gruß,
Andi
Anzeige
AW: Eingabe nach 5 Stellen
18.05.2006 14:39:38
Heinz H
Hallo Andi
Du hast ja soooo recht,ein wahrer Künstler in VBA.
Habe probiert statt
Private Sub cmbSAP_change()
Private Sub cmbSAP_exit()
aber dann kommt immer die Fehlermeldung "Deklaration und Prozedur entspricht nicht der Beschreibung eines Ereignisses oder einer Prozedur mit dem selben Namen "
Was mache ich Bitte falsch.
Gruss Heinz
AW: Eingabe nach 5 Stellen
18.05.2006 14:48:11
Andi
Hi,
statt
Private Sub ComboBox1_Exit()
muss es heißen
Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
wähle die Ereignisse zu den jeweiligen Steuerelementen am besten immer über die beiden DropDown-Menüs im VB-Editor aus; dann hast Du automatisch den richtigen header für das Ereignis.
Schönen Gruß,
Andi
Anzeige
noch was
18.05.2006 14:59:51
Andi
Hi nochmal,
mir is grad noch was eingefallen;
das ganze soll ja auch halbwegs User freundlich sein, und von allein kommt vielleicht niemand auf die Idee, nochmal irgendwo hinzuklicken, nachdem die entsprechende Nummer ausgewählt wurde, nur um das Exit-Ereignis auszulösen.
Ich würde deshalb vorschlagen, neben die ComboBox noch nen CommandButton zu setzen, und den Aufruf des entsprechenden Blattes in dess Click-Ereignis zu packen.
Die IsNumeric-Abfrage würde ich vielleicht noch um ne Fehlermedung ergänzen:
[...]
If Not IsNumeric(cmbSAP) Then
cmbSAP = "" ''Versuch
MsgBox "Ungültige Eingabe"
Else
[...]
Schönen Gruß,
Andi
Anzeige
AW: Eingabe nach 5 Stellen
18.05.2006 15:00:25
Heinz H
Hallo Andi
Ich hab's glaube durch Deine Hilfe geschafft.
Kann es aber erst morgen in der Arbeit so richtig testen.
Wenn dieses Pogramm geöffnet wird,wird die ComboBox sofort mit der kleinsten SAP Nummer gefüllt,und diese Datei geöffnet.
Könntest Du mir da abermals weiterhelfen ??
Also wenn ich das Pogramm starte sollte die ComboBox leer sein.
Recht herzlichen Dank, Heinz
AW: Eingabe nach 5 Stellen
18.05.2006 15:53:24
Andi
Hi,
schreib mal folgenden ins Modul des UserForm:

Private Sub UserForm_Activate()
cmbSAP.Value = ""
End Sub

Schönen Gruß,
Andi
AW: Eingabe nach 5 Stellen
18.05.2006 19:23:32
Heinz H
Hallo Andi
Jetzt habe ich wieder Zeit.
Recht herzlichen Dank für Deine Hilfen.Habe alles glaube ich so halbwegs hingebracht.
Nur eines noch.
Die ComboBox bleibt jetzt nach Deinen Code,wie von mir gewünscht leer.
ABER nur beim öffnen des Pogrammes wird trotzdem noch auf die erste SAP Nummer zugegriffen und geöffnet.
Wüsstest Du Bitte nochmals eine Lösung für mein Problem.
Also das Pogramm sollte normal starten ohne Zugriff auf die externen SAP Nummern.
Danke Heinz
Anzeige
AW: Eingabe nach 5 Stellen
18.05.2006 23:51:19
Andi
Hi,
mit Programm starten meinst Du das Öffnen der Mappe?
Steht im Modul 'DieseArbeitsmappe' irgendwas im Workbook_Open-Ereignis?
Schönen Gruß,
Andi
AW: Eingabe nach 5 Stellen
19.05.2006 06:42:18
Heinz H
Guten morgen, Andi
Habe den ganzen Code von "Diese Arbeitsmappe hochgeladen.
Danke Heinz
Option Explicit
'

Private Sub Workbook_Open()
'On Error Resume Next
'    Application.WindowState = xlNormal
'    Application.Height = 520
'    Application.Width = 540
'    ActiveWindow.DisplayVerticalScrollBar = False
'    ActiveWindow.DisplayHorizontalScrollBar = False
'End Sub


Private Sub Workbook_BeforeClose(Cancel As Boolean)
Sheets(1).Activate
End Sub

AW: Eingabe nach 5 Stellen
19.05.2006 11:35:07
Andi
Hi,
komisch, im Workbook_Open steht offenbar nix drin, is ja alles auskommentiert.
Die Blätter werden doch von der sub DATEN_aus_SAP geöffnet, oder?
Wird diese sub denn noch von irgendwo anders aus aufgerufen, als aus dem Exit-Ereignis der ComboBox?
Beispielsweise wird das Calculate-Ereignis eines Tabellenblattes beim Öffnen automatisch ausgelöst, wenn sich in der Tabelle Datums- oder Uhrzeit-Funktionen befinden. Wenn DATEN_aus_SAP aus so nem Ereignis heraus auch aufgerufen wird, dann könnte das die Erklärung sein.
Schönen Gruß,
Andi
AW: Eingabe nach 5 Stellen
19.05.2006 11:39:35
Heinz H
Hallo Andi
Schön das Du mir immer wieder weiterhilfst.
Ich habe ein Tab.Blatt "Anzeige" wo ein Bild verankert ist.
Wenn ich auf dieses Bild klicke wird dabei die Userform gestartet.
Habe jetzt mal den Code con Tab.Blatt " Anzeige" hochgeladen.
Danke Heinz
Option Explicit

Private Sub Image1_Click()
UserForm1.Show vbModeless
End Sub

'

Private Sub Worksheet_Activate()
'    On Error Resume Next
'    Application.WindowState = xlNormal
'    Application.Height = 520
'    Application.Width = 540
'    ActiveWindow.DisplayVerticalScrollBar = False
'    ActiveWindow.DisplayHorizontalScrollBar = False
'End Sub

AW: Eingabe nach 5 Stellen
19.05.2006 11:49:32
Andi
Hi,
ich glaube, mittlerweile wär's vielleicht doch am besten, wenn ich mal in die Mappe reingucken könnte; schick sie einfach an
andi_herbermail (at) yahoo.de
Dann bekommen wir das vor dem Wochenende schon noch hin.
Ich mach jetz aber erstmal Mittag... :-)
Schönen Gruß,
Andi
AW: Eingabe nach 5 Stellen
19.05.2006 11:56:50
Heinz H
Mahlzeit Andi
Danke recht herzlich für Deine Hilfe
Gruß Heinz
AW: Eingabe nach 5 Stellen
19.05.2006 13:44:24
Andi
Hi,
kannst Du mir mal kurz beschreiben, was denn eigentlich passieren soll, bzw wie man mit dem Programm um geht?
Bei mir öffnet sich da nämlich gar nix, weder wenn ich auf das Bild klicke (den Pfad für die Packanweisungen hab ich angepasst) noch wenn ich ne SAP Nummer auswähle und dann den Buttob drücke. Muss man da vorher noch was eingeben in das UserForm?
Schönen Gruß,
Andi
AW: Eingabe nach 5 Stellen
19.05.2006 14:08:00
Heinz H
Hallo Andi
Habe dir das Pogramm ungzippt gesendet.
Danke Heinz

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige