Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
804to808
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
804to808
804to808
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Textboxes füllen - VBA
30.09.2006 09:06:27
Wolfgang
Hallo*
ich habe untenstehenden Code auszugsweise kopiert. Er soll bewirken, dass der Text, der sich unterhalb der Überschrift in Zeile 2 befindet, in eine Textbox genommen wird. Manchmal passiert es aber, dass der gesuchte Text, in diesem Fall die Lieferantennummer sich zwei bis drei Zellen daneben befindet. Ist es möglich, den Code so zu gestalten, dass der Text (in diesem Fall folgendes Format: drei Zahlen, ein Buchstabe, sechs Zahlen - z.B. 123Y456789) automatisch anhand des Formates gesucht wird und dann die Zellen soweit verschoben werden (nach links), dass der LieferNr. sich wieder unter der passenden Überschrift "LieferNr" befindet? Ich danke schon jetzt Allen für die Rückmeldung.
Herzliche Grüße
Wolfgang
Option Explicit
Dim active_xSheet As Worksheet

Sub Textboxes_fuellen()
Dim mySheet As Worksheet
Dim rng As Range
Set mySheet = ThisWorkbook.Worksheets(x_Sheet)
With mySheet
Set rng = .Rows(1).Find("LieferNr", LookAt:=xlWhole)
If Not rng Is Nothing Then
txtLiefernr.Text = rng.Offset(1, 0).Text
End If
'Wie könnte es hier weitergehen?
'Die weitere Abfrage soll bewirken, dass in Zeile 2 nach einer Nummer mit 'untenstehendem Format gesucht wird und diese dann in die Textbox übernommen wird.
'Es gibt im Tabellenblatt immer nur eine Nummer mit untenstehendem Format, die 'aber nicht immer unter der Überschrift zu finden ist
'und manchmal leider zwei bis drei Zellen daneben steht. Ist möglich, dann in 'der Folge die Zellen nach links zu verschieben, bis dann die LieferNr.
'auch unter der Überschrift LieferNr. zu finden ist?
If Not rng Like "###[A-Z]######" Then
End With
Set rng = Nothing
End Sub

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textboxes füllen - VBA
30.09.2006 12:15:33
fcs
Hallo Wolfgang,
mit folgenden Ergänzungen wird die Liefernummer gefunden und unter die Überschrift gesetzt.
Gruß
Franz

Sub Textboxes_fuellen()
Dim mySheet As Worksheet
Dim rng As Range
Dim i As Integer
Set mySheet = ThisWorkbook.Worksheets(x_Sheet)
With mySheet
Set rng = .Rows(1).Find("LieferNr", LookAt:=xlWhole)
If Not rng Is Nothing Then
'LieferNummer suchen und unter die Überschrift setzen
For i = 0 To 3
If CheckLieferNr(rng.Offset(1, i)) = True Then
rng.Offset(1, 0) = rng.Offset(1, i)
If i <> 0 Then rng.Offset(1, i).ClearContents
Exit For
End If
Next i
txtLiefernr.Text = rng.Offset(1, 0).Text
End If
End With
Set rng = Nothing
End Sub
Private Function CheckLieferNr(LieferNr As String) As Boolean
'Prüft LieferNr auf Format "NNNANNNNNN"
Dim i As Integer
CheckLieferNr = True
If Len(LieferNr) <> 10 Then
CheckLieferNr = False
Exit Function
Else
For i = 1 To 10 'Position der Zeichen in der Liefer-Nr.
Select Case i
Case 1 To 3, 5 To 10 'Diese Zeichen müssen nummerisch sein
If Not (Asc(Mid(LieferNr, i, 1)) >= 48 And Asc(Mid(LieferNr, i, 1)) <= 57) Then
CheckLieferNr = False
Exit Function
End If
Case 4 'Dieses Zeichen muss ein Großbuchstabe (A-Z) sein
If Not (Asc(Mid(LieferNr, i, 1)) >= 65 And Asc(Mid(LieferNr, i, 1)) <= 90) Then
CheckLieferNr = False
Exit Function
End If
Case Else
'do Nothing
End Select
Next i
End If
End Function

Anzeige
AW: Textboxes füllen - VBA
30.09.2006 17:21:07
Wolfgang
Hallo Franz,
Danke für Deine Rückmeldung und Ausarbeitung des Codes. Ich versuche ihn gerade zu integrieren, mache da aber wohl etwas falsch. Wohin kopiere ich genau die Funktion ? Den Code Textboxes_fuellen habe ich hinter die UF mit den Textboxes kopiert. Derzeit erscheint z.B. eine Fehlermeldung, dass bei -If CheckLieferNr(rng.Offset(1, i)) = True Then- die Funktion oder Sub nicht definiert sind. Wäre Dir für weitere Hilfestellung sehr dankbar.
Herzliche Grüße
Wolfgang
Hallo Franz, eine Frage noch.
30.09.2006 17:44:08
Wolfgang
Hallo Franz,
sorry, ich hatte wohl einen Übertragungsfehler 'drin, so dass der Code zunächst deswegen wohl nicht lief. Er läuft nun tadellos und super. Dafür zunächst herzlichen Dank. - Eine Frage/Bitte habe ich noch. - Der Code bewirkt u.a., dass die Lieferantennummer soweit verschoben wird, dass sie wieder unter der Überschrift steht. Wäre auch denkbar, dass alle rechts neben der Lieferantennummer stehenden Daten ebenfalls "mitgezogen" werden, da auch diese unter falscher Überschrift stehen ? Meistens, so habe ich beobachtet, sind das 2-3 Zellen -rechts-. Danke schon jetzt wieder für Deine Rückmeldung.
Herzliche Grüße
Wolfgang
Anzeige
AW: Hallo Franz, eine Frage noch.
01.10.2006 12:46:15
fcs
Hallo Wolfgang,
mit folgenden Anpassungen im Hauptmakro wird die Liefernummer zusammen mit den rechts davon ausgefüllten Zellen nach links verschoben falls erforderlich. Die Anzahl der zu verschiebenden Zellen wird vom Makro ermittelt. Du kannst hier aber auch eine feste Zahl vorgeben.
Gruss
Franz

Sub Textboxes_fuellen()
Dim mySheet As Worksheet
Dim rng As Range
Dim i As Integer, Anzahl As Integer
Set mySheet = ThisWorkbook.Worksheets(x_Sheet)
With mySheet
Set rng = .Rows(1).Find("LieferNr", LookAt:=xlWhole)
If Not rng Is Nothing Then
'LieferNummer suchen und zusammen mit den Nachbarzellen unter die Überschriften setzen
For i = 0 To 3
If CheckLieferNr(rng.Offset(1, i)) = True And i <> 0 Then
'Anzahl der Zellen in Zeile 2 ermitteln, die nach links verschoben werden müssen
Anzahl = .Cells(2, .Columns.Count).End(xlToLeft).Column - rng.Column - i + 1
'Zellen ausschneiden und verschieben
rng.Offset(1, i).Range(Cells(1, 1), Cells(1, Anzahl)).Cut Destination:=rng.Offset(1, 0)
Exit For
End If
Next i
txtLiefernr.Text = rng.Offset(1, 0).Text
End If
End With
Set rng = Nothing
End Sub

Anzeige
Anwendungsfehler
01.10.2006 16:10:01
Wolfgang
Hallo Franz,
zunächst erneut meinen herzlichen Dank für Deine Rückmeldung und Ergänzung des Codes. Ich habe ihn umgebaut (ich hoffe, dieses Mal ohne Fehler) und es erscheint eine Fehlermeldung mit dem Hinweis "Anwendungsfehler oder objektdefinierter Fehler", Debuggen bleibt dann in der Zeile "rng.Offset(1, i).Range(Cells(1, 1), Cells(1, Anzahl)).Cut Destination:=rng.Offset(1, 0)" stehen. Hättest Du da evtl. eine Idee, was da bei mir falsch laufen könnte ? - Steht die Nummer unter der richtigen Überschrift, wird diese übernommen. Schon jetzt wieder herzlichen Dank für Deine Rückmeldung.
Gruß - Wolfgang
Anzeige
AW: Anwendungsfehler
02.10.2006 15:27:36
fcs
Hallo Wplfgang,
bei mir hat der Code beim Testen einwandfrei gearbeitet.
Möglicherweise wird die Variable "Anzahl" bei dir nicht korrekt berechnet. Hat Sie enen Wert kleiner oder gleich 0, dann kommt eine Fehlermeldung. Setze für Anzahl den Wert einfach mal auf 4, und teste ob es funktioniert. Steht die LieferNr an der richtigen Position (I=0), dann wird der Code innerhalb der If-Bedingung nicht abgearbeitet. Also kommt auch keine Fehlermeldung.
Gruss
Franz
AW: Anwendungsfehler
03.10.2006 11:58:01
Wolfgang
Hallo Franz,
erneut meinen herzlichen Dank für Deine Rückmeldung.- Ich habe -als Laie- versucht, Deinen Hinweis umzusetzen, weiß allerdings ehrlich gesagt nicht genau, wo ich den Wert Anzahl verändern kann. Wäre Dir somit sehr dankbar mir den Hinweis zu geben, damit ich dann weiter ausprobieren kann. Einen schönen Feiertag noch.
Gruß - Wolfgang
Anzeige
AW: Anwendungsfehler
03.10.2006 15:56:15
fcs
Hallo Wolfgang,
sieht im Code dann so aus
Gruss
Franz

Sub Textboxes_fuellen()
Dim mySheet As Worksheet
Dim rng As Range
Dim i As Integer, Anzahl As Integer
Set mySheet = ThisWorkbook.Worksheets(x_Sheet)
With mySheet
Set rng = .Rows(1).Find("LieferNr", LookAt:=xlWhole)
If Not rng Is Nothing Then
'LieferNummer suchen und zusammen mit den Nachbarzellen unter die Überschriften setzen
For i = 0 To 3
If CheckLieferNr(rng.Offset(1, i)) = True And i <> 0 Then
'Anzahl der Zellen in Zeile 2 ermitteln, die nach links verschoben werden müssen
Anzahl = 4
'Zellen ausschneiden und verschieben
rng.Offset(1, i).Range(Cells(1, 1), Cells(1, Anzahl)).Cut Destination:=rng.Offset(1, 0)
Exit For
End If
Next i
txtLiefernr.Text = rng.Offset(1, 0).Text
End If
End With
Set rng = Nothing
End Sub

Anzeige
Danke Franz - funktioniert so.
03.10.2006 17:04:28
Wolfgang
Hallo Franz,
Danke für Deine erneute Rückmeldung und Deine Hinweise zur Umstellung des Codes; Ich habe ihn so umgestellt und nun erscheint auch keine Fehlermeldung mehr. Herzlichen Dank dafür und weiterhin einen schönen Feiertag.
Gruß - Wolfgang

176 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige