Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1244to1248
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
Inhaltsverzeichnis

Suche und automatischer Ausdruck

Suche und automatischer Ausdruck
Karlle
Hi Leute,
kan mir jemand bei meinem Vorhaben helfen?
Ich habe eine Tabelle in der in Splate b und c zahlen stehen.
Ich möchte eine Zahl in Spalte b suchen, wenn diese gefunden wird möchte ich in der gleichen Zeile eine fortlaufende Nummer im Format "YYYY#######" eingetragen bekommen.
Daraufhin möchte ich einen Ausdruck generiert bekommen im Format Zelle A als eine bestimmte bereits installierte Schrift die einen Barcode darstellt, darunter Zelle B in z.B. Arial, darunter Zelle C gleiche Schrift wie zuvor.
Dann möchte ich auf Zelle K springen um dort etwas eingeben zu können. Daraufhin möchte ich gleich wieder in der Suchmaske sein.
Ist so etwas möglich? und wenn ja wie?
gruß
kalle
AW: Suche und automatischer Ausdruck
26.01.2012 00:45:32
fcs
Hallo Kalle,
hier eine Beispieldatei mit entsprechenden Makros (im VBA-Editor unter Tabelle1 und ModulZahlensuche).
https://www.herber.de/bbs/user/78604.xlsm
Die Namen der Tabellenblätter und Splatennummern im Code muss du ggf. anpassen.
Gruß
Franz
AW: Suche und automatischer Ausdruck
26.01.2012 15:44:43
Kalle
Hallo,
vielen Dank, das sieht schon super aus.
Allerdings kann mann jetzt nur nach Zahlen suchen.
Es bestehet auch die Möglichkeit das Zahlen und Leerzeichen vorhanden sind.
Kann man das auch abdecken?
gruß
kalle
AW: Suche und automatischer Ausdruck
26.01.2012 16:32:18
fcs
Hallo Kalle,
ich hab die Prüfung der Eingabe auf nummerischen Wert in der Prozedur rausgenommen. D.h., es können jetzt beliebige Inhalte zum Suchen eingegeben werden.
Gruß
Franz
Option Explicit
Private varEingabe As Variant
Sub ZahlenSuchen()
Dim Zelle As Range, strErste As String
Dim Maxzahl As Double
Dim wks As Worksheet, wksDruck As Worksheet
Const lngSpalteLfdNr As Long = 1 'Spalte mit fortlaufender Nummer (A=1, B=2 usw.)
Set wks = Worksheets("Tabelle1")
Set wksDruck = Worksheets("Druck")
Eingabe:
varEingabe = InputBox(Prompt:="Zu suchende Zahl?", _
Title:="Zahlen suchen - fortlaufende Nummer eintragen", Default:=varEingabe)
If varEingabe = "" Then GoTo Beenden
'varEingabe in Spalte B suchen
Set Zelle = wks.Range("B:B").Find(What:=varEingabe, LookIn:=xlValues, lookat:=xlWhole)
If Zelle Is Nothing Then
MsgBox "Eingegebene Zahl nicht gefunden"
GoTo Eingabe
Else
strErste = Zelle.Address
With wks
Do
'Prüfen, ob in Spalte A der Zeile bereits eine fortlaufende Nummer eingetragen ist
If IsEmpty(.Cells(Zelle.Row, lngSpalteLfdNr)) Then
'letzte (max.) Zahl YYYY0000000 in Spalte A berechnen
Maxzahl = Application.WorksheetFunction.Max(.Range("A:A"))
If Maxzahl = 0 Then
'noch keine fortlaufende Nummer eingetragen
Maxzahl = CDbl(Format(Date, "YYYY") & "0000001")
ElseIf Left(Format(Maxzahl, "00000000000"), 4)  Format(Date, "YYYY") Then
'Neues Jahr hat begonnen
Maxzahl = CDbl(Format(Date, "YYYY") & "0000001")
Else
Maxzahl = Maxzahl + 1
End If
'neu Zahl YYYY0000000 in Spalte A (1)  eintragen
.Cells(Zelle.Row, lngSpalteLfdNr) = Maxzahl
'Werte aus Spalten A bis C ins Druckblatt übertragen
wksDruck.Range("A1") = .Cells(Zelle.Row, 1)
wksDruck.Range("A2") = .Cells(Zelle.Row, 2)
wksDruck.Range("A3") = .Cells(Zelle.Row, 3)
'Barcode + Daten Drucken
wksDruck.PrintPreview 'Druckvorschau
'          wksDruck.PrintOut 'direkt drucken auf aktiven Drucker
'Zelle in Spalte K selektieren
.Cells(Zelle.Row, 11).Select
Exit Do
Else
'Nächste Zeile mit gleicher Zahl suchen
Set Zelle = .Range("B:B").FindNext(after:=Zelle)
If Zelle.Address = strErste Then
MsgBox "Für Zahl " & varEingabe _
& " ist bereits eine fortlaufende Nummer eingetragen", _
vbInformation + vbOKOnly
GoTo Eingabe
End If
End If
Loop Until Zelle.Address = strErste
End With
End If
Beenden:
Set wks = Nothing: Set wksDruck = Nothing: Set Zelle = Nothing
End Sub

Anzeige
AW: Suche und automatischer Ausdruck
26.01.2012 16:41:25
Kalle
Das ist ja echt geil,
ich hab jetzt mal versucht das Datum mit z.B. einer # zu trennen. (2012#0000001)
geht das auch?
gruß
kalle
AW: Suche und automatischer Ausdruck
26.01.2012 16:45:21
Kalle
Oh mir ist da gerade noch was aufgefallen,
wenn man in Spalte K steht und die "entf"-Taste drückt geht das Suchfeld auf. Das ist nicht so günstig. kann man das abschalten?
gruß
kalle
AW: Suche und automatischer Ausdruck
26.01.2012 17:41:18
fcs
Hallo Kalle,
1. Eingabebox nicht anzeigen, wenn in K gelöscht wird:
'Anpassung im Ereignismakro:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 11 And Target.Cells.Count = 1 Then 'Spalte K
'Nach Werteingabe in Spalte K Eingabebox wieder anzeigen
If Target  "" Then Call ZahlenSuchen
End If
End Sub
2. Trennzeichen nach Jahreszahl in fortlaufender Nummer in Spalte A
Verwende hier ein benutzerdefiniertes Format für die Spalte: 0000"#"0000000
Damit im Ausdruck das Trennzeichen erscheint zusätzlich folgenden Abschnitt im Hauptmakro anpassen:
            'Werte aus Spalten A bis C ins Druckblatt übertragen
wksDruck.Range("A1") = .Cells(Zelle.Row, 1).Text   'hier anpassen!!!
wksDruck.Range("A2") = .Cells(Zelle.Row, 2)
wksDruck.Range("A3") = .Cells(Zelle.Row, 3)

Wenn die fortlaufende Nummer als Text formatiert wird, um das Trennzeichen als echtes Zeichen in die Zelle zu schreiben, dann wird die Berechnung der vorhandenen höchsten laufenden Nummer kompliziert.
Gruß
Franz
Anzeige
AW: Suche und automatischer Ausdruck
26.01.2012 22:00:00
Kalle
Hi,
vielen Dank für deine Mühe.
Darf ich noch einmal was fragen?
Wieso funktioniert das hochzählen nicht wenn ich das Format YYYY in YYYYMMDD oder in YYMMDD ändere?
mfg
kalle
AW: Suche und automatischer Ausdruck
27.01.2012 06:55:31
fcs
Hallo Kalle,
in einem Datumsformat können nur Zahlen dargestellt werden, die dem Datum im Bereich vom 01. Januar 100 bis zum 31. Dezember 9999 und eine Uhrzeit im Bereich von 0:00:00 bis 23:59:59 entsprechen. Da 1 = ein Tag ist, also Zahlen bis ca. 9999*365 = ca. 3,65 Mio.
Wenn du der fortlaufenden Nummer eine andere Information voranstellen willst, dann muss man das anders aufziehen. Zwei Möglichkeiten wären:
1. Makro anpassen und benutzerdefiniertes Format für lfd.-Nr.
Benutzerdefiniertes Format: 00000000"#"0000000
Makro:
          If IsEmpty(.Cells(Zelle.Row, lngSpalteLfdNr)) Then
'letzte (max.) Zahl YYYYMMDD0000000 in Spalte A berechnen
Maxzahl = Application.WorksheetFunction.Max(.Range("A:A"))
If Maxzahl = 0 Then
'noch keine fortlaufende Nummer eingetragen
Maxzahl = CDbl(Format(Date, "YYYYMMDD") & "0000001")
ElseIf Left(Format(Maxzahl, "000000000000000"), 4)  Format(Date, "YYYY") Then
'Neues Jahr hat begonnen
Maxzahl = CDbl(Format(Date, "YYYYMMDD") & "0000001")
Else
Maxzahl = Maxzahl + 1
End If
'neu Zahl YYYYMMDD0000000 in Spalte A (1)  eintragen
.Cells(Zelle.Row, lngSpalteLfdNr) = Maxzahl
Dabei muss man beachten, dass Excel mit max. 15 signifikanten Ziffern rechnet. Diese Grenze ist bei diesen Zahlen erreicht.
2. Die von mir bereits angesprochene etwas kompliziertere Ermittlung der nächsten laufenden Nummer.
Textdatei mit Makro: https://www.herber.de/bbs/user/78616.txt
Gruß
Franz
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige