Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Suche und automatischer Ausdruck | Herbers Excel-Forum


Betrifft: Suche und automatischer Ausdruck von: Karlle
Geschrieben am: 25.01.2012 16:59:34

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

  

Betrifft: AW: Suche und automatischer Ausdruck von: fcs
Geschrieben am: 26.01.2012 00:45:32

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


  

Betrifft: AW: Suche und automatischer Ausdruck von: Kalle
Geschrieben am: 26.01.2012 15:44:43

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


  

Betrifft: AW: Suche und automatischer Ausdruck von: fcs
Geschrieben am: 26.01.2012 16:32:18

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



  

Betrifft: AW: Suche und automatischer Ausdruck von: Kalle
Geschrieben am: 26.01.2012 16:41:25

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


  

Betrifft: AW: Suche und automatischer Ausdruck von: Kalle
Geschrieben am: 26.01.2012 16:45:21

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


  

Betrifft: AW: Suche und automatischer Ausdruck von: fcs
Geschrieben am: 26.01.2012 17:41:18

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


  

Betrifft: AW: Suche und automatischer Ausdruck von: Kalle
Geschrieben am: 26.01.2012 22:00:00

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


  

Betrifft: AW: Suche und automatischer Ausdruck von: fcs
Geschrieben am: 27.01.2012 06:55:31

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


Beiträge aus den Excel-Beispielen zum Thema "Suche und automatischer Ausdruck"