Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Modifizierter Zellensprung nach Eingabe - VBA?
#1
Hallo zusammen.

Ich möchte folgendes erreichen:

Ich bin in Zelle A1 und scanne einen Barcode mit autmatischer Eingabe. Der Cursor springt in Zelle B2 und ich Scanne den 2ten Code mit automatischer Eingabe. Nun soll der Curser aber nicht in C3, sondern eine zelle Runter und eine Zelle links springen, damit ich ohne manuelles eingreifen den nächsten Bardcode scannen kann. Ich komme leider nicht weiter mit meinen mangelnden VBA Kenntnissen...oder ist es gar ohne Möglich?

Bin für jede Hilfe dankbar!
MfG Kai

Edit: Sprung in nächste Freie Zelle der Spalte A geht leider nicht, denn nicht jede Zeile wird befüllt. ca jede 20te wird leer sein
Antworten Top
#2
Hallo

vielleicht so?
gehört ins Klassenmodul des Tabellenblatts in dem es stattfinden soll

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Not Intersect(Target, (Columns(2))) Is Nothing Then
       Cells(Target.Row + 1, 1).Select
   End If
End Sub
MfG Tom
Antworten Top
#3
Hey Tom

also ich mache einen Rechtsklick auf meinen Tabellenreiter und sage Code anzeigen. Dann füge ich in den aufgelisteten Tabellenreitern auf der Linken Seite den Code ein, gehe mit X wieder raus, speichere ab und dann sollte es funktionieren...? Denn das tut es leider nicht. Vielleicht mache ich aber auch etwas falsch.

Zur Funktionsweise...wie arbeitet das Makro dann? Ist es egal welche Zelle, er springt dann immer einen runter und einen Links?

MfG Kai
Antworten Top
#4
Hallo Korgrimm,

1) Wie scannst du ein und wieso springt der Cursor von A1 in Zelle B2?

2) zu:
Zitat:Sprung in nächste Freie Zelle der Spalte A geht leider nicht, denn nicht jede Zeile wird befüllt. ca jede 20te wird leer sein

Was soll dass? In eine Erfassungstabelle mit gleichen Daten darf es in der Regel keine Leerzeilen geben.
Am interessantsten für mich ist, wie die Helfer das "ca" umsetzen.
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Antworten Top
#5
Hallo Kal

ob deine Tabelle wegen der 20.ten Leerzeile klug oder sinnvoll ist lasse ich mal offen.  Wenn die Datei so existiert ist es eben so.  Unten mal ein Code der in ein normales Mudulblatt gehört zum Spielen.  Hiert wird der Eingabebereich auf zwei Spalten begrenzt.  Eine andere Methode!!

Mit diesem Code kannst du bei deiner Tabelle den Eingabebereich festlegen, d.h., dein Curosr kann nur noch in diesen beiden Spalten laufen. Auf das übrige Blatt kann man dann nicht mehr zugreifen.  Der Curosr wird dabei auf Bewegung nach Rechts gesetzt.  So funktioniert deine Eingabe fast ohne Makro.   

Diesen Bereich "A-B" kannst du mit einem zweiten Makro auch wieder zurücksetzen. Und den Curosr wieder auf Bewegung nach unten setzen.  
Man kann.alle Makros über normalen CommandButton ausführen, das Makro dem Button direkt zuweisen!. (kein AktiveX Steuerelement !!)

Unkalr ist mir die Forderung die 20. Zelle freilassen. Woran erkennt man das??  Gibt es seitlich einen Text nach dem man sich richten kann, oder muss das Makro immer bis 20 zaehlen und eine Zelle weiterspringen??  Ab wo beginnt das Zaeehlen.  Ab der 1. zelle, oder steht da eine Überschrift???  Das müsste man zum Makro schreiben wissen.

mfg  Gast 123 

Code:
'26.5.2017    Gast 123    Clever Forum

'Dieses Makro legt den Bereich "A-B" fest
'und setzt den Cursor auf Rechts Bewegung

Sub Bereich_festlegen_Cursor_Rechts()
  Worksheets("Tabelle1").ScrollArea = "A:B"
  Application.MoveAfterReturnDirection = xlToRight
End Sub


'Makro Hebt den bereich auf, ganze Tabelle verfügbar
Sub Bereich_wieder_löschen()
  Worksheets("Tabelle1").ScrollArea = Empty
End Sub


'Makro SetztCursor Bewegung nach unten
Sub Cursor_nach_Unten()
   Application.MoveAfterReturnDirection = xlDown
End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • Korgrimm
Antworten Top
#6
Guten Tag zusammen,

verzeiht meine späte Rückmeldung, ich war ne Zeitlang außer Gefecht gesetzt.
Ich füge mal eine vereinfachte Variante dieser Tabellen an, vielleicht wird es so am einfachsten deutlich was ich möchte.
Die Leeren Zellen sind dann meist Anlieferungen, wo kein Code eingescannt wird. Da das jedoch an anderer Stelle verbucht wird, könnte man das eventuell sogar vernachlässigen.

Das eingrenzen auf feste Spalten funktioniert auch nicht immer, denn es gibt Tabellen wo ich noch eine Bemerkungsspalte anfügen muss, oder ggf. händisch eingreifen muss. Aber das Makro hab ich mal abgespeichert, das scheint mir praktisch zu sein Smile

Wenn ich mit meinem Vorhaben komplett chaotisch unterwegs bin sagt es mir ruhig, dann setze ich an anderer Stelle an...

MfG und tausend Dank für die Hilfestellung

Edit: Mein Eröffnungspost ist ein wenig wirr sehe ich gerade. Der Cursor springt natürlich nicht von A1 nach B2, sondern nach B1 und C1 usw....nach rechts halt.


Angehängte Dateien
.xls   Beispiel Forum.xls (Größe: 68 KB / Downloads: 3)
Antworten Top
#7
Hallo,

teste folgendes:


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Row > 7 Then
   If Target.Column = 7 Then
      Target.Offset(, 1).Select
   ElseIf Target.Column = 8 Then
     Target.Offset(1, -1).Select
  End If
 End If
End Sub
Gruß Atilla
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste