Hallo Excelaner. Ich, Handwerksmeister und von Excel soviel Ahnung wie Trump von Diplomatie, brauche Hilfe ?
Seit Tagen suche ich bei den Suchmaschinen wie folgt:
In einer Tabelle möchte ich Lohnzeiten erfassen. Ich habe dazu mehrere Spalten gebaut. (S. Anhang)
Spalte A ist erkennbar Datum Spalte B (hier geht es drum) soll die Monteure „x“, „y“ und „z“ Erfassen Spalte c bis h sind die Zeiten, welche in AW und umgerechnete Stunden beinhalten
Wenn ich nun zB. den Monteur „z“ in die spalte „b“ eintrage, soll nach „enter“ immer der Cursor in der gleichen Zeile in Spalte „E“ springen. Bei „y“ in Spalte „G“ Bei „x“ in Spalte „C“ (das wäre noch das einfachste
Ich möchte einfach dadurch die Dusselfehler vom dicken Handwerksfinger vermeiden.
Was muss ich tun? Mit einem Makro habe ich mich heute erstmalig beschäftigt. (Cool...) Aber dann hört’s echt auf.
der Code dazu könnte so aussehen. Code in das Blattmodul einfügen.
Code:
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 2 Then Select Case Target.Value 'Zellinhalt von B Case "x" 'wenn x dann Cells(Target.Row, 5).Select Case "y" Cells(Target.Row, 7).Select Case "z" Cells(Target.Row, 3).Select End Select End If End Sub
Gruß Elex
Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:1 Nutzer sagt Danke an Elex für diesen Beitrag 28 • Excelos
Leider nicht erfolgreich. Ich habe etwas rumprobiert und recherchiert auf Google zB. was heißt "Spalte" auf Engisch (stimmt wirklich...)
Habe dann versucht die kopierten Zeilen zu verstehen. Zumindest auf meine dumpfe Art.
Private Sub Worksheet_Change(ByVal Target As Range) Eröffnet das VBA, Rest versteh ich nicht
If Target.Column = 2 Then Wenn in Spalte 2 was steht (nicht B?) dann...
Select Case Target.Value Wähle die Variable aus oder definiere die folgende Variable
Case "x" wie schon erwähnt "x" wird definiert (wenn ich 'vor den Text schreibe wird derf folgende Text missachtet?)
Cells(Target.Row, 5).Select Zellenziel Reihe (5? oder Spalte 5) wählen.
usw....
Habe ich das richtig interpretiert?
In meine Arbeitsblatt eingefügt tut sich leider nichts. Habe dann etwas rumexperiemntiert, aber das war wie wenn Kinden anfangen zu backen und mixen ahnungslos die Zutaten hin un her. Sollte ich mich doch dem lieber wieder dem grobmotorischem Dingen annehmen?
Code mal etwas ergänzt. Rechtsklick auf deinen Tabellenreiter wie in #4 beschrieben und Code dort einfügen. Datei als .xlsm oder .xlsb speichern.
Code:
'Wird im Blatt eine oder mehrere Zellen der inhalt geändert, dann startet der Code 'Target ist der Bereich oder nur die eine Zelle die geändert wurde Private Sub Worksheet_Change(ByVal Target As Range)
'Wenn geänderte Zelle in Spalte 2 also B ist dann weiter 'Zusätzlich darf der Bereich auch nur aus einer Zelle bestehen. If Target.Column = 2 And Target.Cells.Count = 1 Then
Select Case Target.Value 'Zellinhalt der geänderten Zelle merken. 'gemerkete mit den Vorgaben vergleichen
Case "x" 'Gemerkte vergleichen mit "x" 'wenn x dann die Zelle(Zeile, Spalte) markieren -> Cells(2, 3) wäre C2 Cells(Target.Row, 5).Select
Case "y" Cells(Target.Row, 7).Select
Case "Max Muster" 'Gemerkte vergleichen mit "Max Muster" Cells(Target.Row, 3).Select End Select
End If End Sub
Gruß Elex
Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:1 Nutzer sagt Danke an Elex für diesen Beitrag 28 • Excelos
01.12.2020, 20:36 (Dieser Beitrag wurde zuletzt bearbeitet: 01.12.2020, 20:52 von Excelos.)
(01.12.2020, 10:41)ralf_b schrieb: ins Codemodul des Arbeitsblattes oder da wo die Zellen drin sind?
Hallo ralf_b :43:
Ich habe die Zeilen ins Codemodul reinkopiert und hatte es Modul1 genannt. JUHU, freu es funktioniert. :100:
Ihr seit meine Excelhelden. Danke Elex und ralf_b :18: Jetzt kann ich rumprobieren. Ich freu mich wirklich total. Wie nach meiner ersten (funktionierenden) Heizung, die ich gebaut hatte. Danke :23: Danke Elex. Das hat geklappt