Clever-Excel-Forum

Normale Version: Scan in next leere Zelle eines Spaltenbereichs
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
[attachment=27203]  Hallo, ich bin ein älteres Semester (75) arbeite seit Jahren mit Excel und will jetzt endlich mal mit Makro anfangen.
Leider komme ich nicht zum Ergebnis und fummel schon vergeblich seit längerer Zeit an einem Makro. Vielleicht kann mir jemand helfen. Meine Datei ist vom Umfang klein. Ich habe der Einfachheit halber meine Datei angehängt und in der Datei in einem eingefügten Feld meine "Wünsche" versucht zu erläutern.

Ich will Paletten-Barcode im Wareneingang scannen und in bestimmte "Gassen" verbringen lassen. Die Gassen sind kurz so das eine Platznummer nicht zwingend erforderlich ist. Auf Grund einer Info auf dem Paletten-Etikett weiß ich im Vorhinein in welche Gasse eingelagert wird. Im Prinzip gibt es nur 5 Gassen. Excel soll mir nach dem ich Excel mitteile dieser Artikel kommt z.Bspl. in Gasse 5.. die nächste freie Zelle zum einscannen zuweisen.

Wichtig ist mir, dass durch ein Makro die bestehende Formatierung nicht überlagert oder ausgehebelt wird.

Freue mich, wenn mir einer der Experten-/innen helfen kann.

Wolfgang
Hallo Wolfgang,

hier mein Vorschlag mit Doppelklick in eine Zelle der Zeile 1:


' **************************************************************
' Modul: Tabelle3 Typ = Element der Mappe(Sheet, Workbook, ...)
' **************************************************************


Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim rngB As Range
Dim rngZ As Range

If Not Application.Intersect(Target, Range("C1:U1")) Is Nothing Then
'nächste freie Zelle im jeweiligen Bereich selektieren
Select Case Target.Column
Case 3 To 6
Set rngB = Range("C2:C15,D2:D15,E2:E15,F2:F15")
Case 7 To 12
Set rngB = Range("G2:G15,H2:H15,I2:I15,J2:J15,K2:K15,L2:L15")
Case 13 To 17
Set rngB = Range("M2:M15,N2:N15,O2:O15,P2:P15,Q2:Q15")
Case 18 To 20
Set rngB = Range("R2:R15,S2:S15,T2:T15")
Case 21
Set rngB = Range("U2:U15")
End Select
For Each rngZ In rngB
If rngZ.Value = "" Then
rngZ.Select
Exit For
End If
Next rngZ
End If

If Target.Cells(1).Address = "$W$1" Then 'Einträge löschen
Set rngB = Range("W2:W15")
For Each rngZ In rngB
If rngZ.Value <> "" Then
Range("C2:U15").Replace rngZ.Value, "", xlWhole
rngZ = ""
End If
Next rngZ
End If
End Sub
[attachment=27204]

Gruß Uwe
Halle Uwe,i

peng... ich bin platt über die schnelle Antwort. Habe ich gerade gelesen. Muss zu einem Termin und werde sobald ich zurück bin, Deinem Vorschlag / Deiner Idee folgen.  Melde mich über das Ergebnis. Erst einmal vorab vielen, vielen Dank.  Bis später  .. 

Gruß Blush Wolfgang
Hallo Uwe,
nochmals meinen besten Dank. Ich war gestern schon platt über Deine schnelle Reaktion und Hilfe. Konnte wie ich schon schrieb, aber erst jetzt ausprobieren. Klappt alles - ohne wenn und aber - so wie ich es mir vorgestellt und gewünscht habe.  Super .....!!!
Wenn ich könnte würde ich in Deine "Schule" gehen.
Danke . 

Gruß Wolfgang
Hallo Uwe,
ich habe mit "Deinem Programm" gearbeitet und es hat alles geklappt. Beim Essen kommt der Appetit, ich nutze die Datei in einer Lagerhalle und habe ein kleines Problem mit dem sofortigen Erkennen wo der Cursor in welcher leeren Zelle steht. Ist es unverschämt wenn ich Dich noch bitte ob Du mir die Zelle wo der Cursor hin gesprungen ist, farblich (kräftiges gelb) markierst bis ich dort eine ID eingegeben habe.??
Das wäre eine Vereinfachung und Beschleunigung meiner Lagerabläufe.

Gruß Wolfgang
Hallo Wolfgang,

füge noch eine Bedingte Formatierung für den Bereich C2:U15 mit folgender Formel ein:

=UND(C2="";ADRESSE(ZELLE("Zeile");ZELLE("Spalte"))=ADRESSE(ZEILE();SPALTE()))

und stelle das Format Deinen Wünschen entsprechend ein.

IM VBA-Code kommt unter die Zeile
        rngZ.Select
zusätzlich
        rngZ.Calculate
Gruß Uwe
Hallo Uwe,
danke für die Ergänzung. Auch die klappt einwandfrei. Das hilft mir in der Praxis enorm.
Nochmals meinen allerbesten Dank für die gute funktionierende Unterstützung und die Schnelligkeit Deiner Hilfe.
Für heute Dank, Dir eine gute Woche und die besten Grüße
Wolfgang