Registriert seit: 15.10.2019
Version(en): 2019
Hallo! Ich bin schon etwas mit Makros in Excel vertraut, finde aber für folgende Frage keinen Ansatz:
In Spalte A stehen 20 Namen von Personen In der ersten Zeile stehen Datumseinträge Nun möchte ich folgendes realisieren: ich wähle z.B. Zelle F2 aus, das wäre dann die Zelle für den ersten Namen in der Liste (Spalte A) und das fünfte Datum. Jetzt soll per Knopf ein Makro starten, sodass ein PopUp (nennt man das so?)-Fenster erscheint, in dem der Name aus Spalte A und ein Eingabefeld steht. In dem Eingabefeld möchte ich eine Zahl eingeben, die das Makro in die Zelle schreibt. Bestätigung mit Enter öffnet ein neues Eingabefeld für den zweiten Namen und so weiter. Das wird solange wiederholt, bis alle Namen für das Datum eine Zahl haben (hierzu dachte ich, von Excel die Anzahl der Namen zählen zu lassen, sodass Excel die notwendige Anzahl Wiederholungen kennt).
Natürlich kann ich einfach in die Zelle gehen, den Wert eingeben, Enter drücken und bin in der nächsten Zeile, wo ich wieder einen Wert eingeben kann. Da aber die letzliche Anwednung komplexer als das oben beschriebene ist, wäre ein Makro eine Erleichterung. Ich habe hierfür keinen Ansatz, da ich mich Eingabeauffoderungen und Wiederholungen nicht so gut auskenne.
Für Hilfe wäre ich sehr dankbar!!
VG Jimmy
Registriert seit: 05.09.2017
Version(en): 2013
15.10.2019, 11:39
(Dieser Beitrag wurde zuletzt bearbeitet: 15.10.2019, 11:47 von Werner.M.)
Hallo Jimmy, auch wenn sich mir der Sinn des ganzen nicht wirklich erschließt. Code: Option Explicit
Public Sub Eintragen() Dim loLetzte As Long, i As Long, varWert As Variant
Application.DisplayAlerts = False
loLetzte = Cells(Rows.Count, 1).End(xlUp).Row For i = ActiveCell.Row To loLetzte varWert = Application.InputBox(Cells(i, 1), "Wert erfassen", , , , , , 1) If varWert = False Then Exit Sub Cells(i, ActiveCell.Column) = varWert Next i End Sub
Gruß Werner
Hallo Jimmy, noch was vergessen. Änderung, damit das erst ab Zeile 2 funktioniert. Code: Option Explicit
Public Sub Eintragen() Dim loLetzte As Long, i As Long, varWert As Variant
Application.DisplayAlerts = False
loLetzte = Cells(Rows.Count, 1).End(xlUp).Row
If ActiveCell.Row > 1 Then For i = ActiveCell.Row To loLetzte varWert = Application.InputBox(Cells(i, 1), "Wert erfassen", , , , , , 1) If varWert = False Then Exit Sub Cells(i, ActiveCell.Column) = varWert Next i End If End Sub
Gruß Werner
Registriert seit: 05.09.2019
Version(en): Office 365
Hallo - Rechtsclick auf den Tabellenblattreiter - Code anzeigen - Code dort eintragen Code: Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim LR As Integer If Target.Column <> 1 Then If Target.Row > 1 Then If IsDate(Cells(1, Target.Column)) Then If Cells(Target.Row, 1) <> "" Then Target = InputBox("Neuer Wert für: " & Cells(Target.Row, 1), "Dateneingabe") Target.Offset(1, 0).Select End If End If End If End If End Sub
LG UweD
Registriert seit: 15.10.2019
Version(en): 2019
15.10.2019, 17:34
(Dieser Beitrag wurde zuletzt bearbeitet: 15.10.2019, 17:34 von Jimmy_Pulp.)
Hallo Werner, vielen Dank, das tut, was es soll! Der Sinn ist, dass ich das für eine etwas komplexere Anwendung brauche als die beschriebene. So kann ich es etwas übersichtlicher gestalten. Vielen Dank
Hallo UweD,
sorry für die Anfängerfrage, aber wie kann ich den Code aktivieren? Ich kann über "Marko zuweisen" das nicht anwählen...
LG Jimmy
Kann man das auch so erweitern, dass in der InputBox kein Eingabefeld, sondern Buttons erscheinen. Schön wären 16 Buttons mit den Zahlen von 0 bis 15 und bei Klick auf den Button wird der Buttonwert in die Zelle eingetragen. Ist soetwas möglich? Hintergrund ist, dass ich Noten von Schülern in Excel erfassen möchte. Dazu habe ich ein Tabellenblatt mit den Schülernamen in Spalte 1 und die Daten in Zeile 1. Nun wähle ich die Zelle unter dem entsprechenden Datum, starte das Makro und kann blitzschnell von allen Schülern die Noten eingeben. Das ist deshalb schick, weil ich mit einem Surface arbeite und dann die Noten per Toucheingabe erfassen kann: In die Zelle von heute klicken, Button zum Starten drücken und dann Schüler für Schüler die Noten per Touchfeld eingeben.
Zweite Frage: ist es auch möglich Zahlen oder Text einzugeben? Bei abwesenden Schülern würde ich z.B. so etwas wie e1 eintragen wollen. Wenn ja, kann man das auch per Button erfassen?
LG Jimmy
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
15.10.2019, 17:41
(Dieser Beitrag wurde zuletzt bearbeitet: 15.10.2019, 17:43 von Käpt'n Blaubär.)
Hallo, Zitat:sorry für die Anfängerfrage, aber wie kann ich den Code aktivieren? Ich kann über "Marko zuweisen" das nicht anwählen... ... stimmt, das kannst Du nicht, weil der Code eben nicht in ein Allgemeines Modul, sondern hinter das Blatt gehört, in dem es tätig werden soll. Drum steht auch in der Code-Überschrift ziemlich deutlich ... Worksheet ... Außerdem: Das Teil heißt nicht Marko
Registriert seit: 15.10.2019
Version(en): 2019
Danke Käptn für die Aufklärung. Wie heißt es denn dann und wie starte ich den Code? Bin ja zum Lernen hier...
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
Hallo, Zitat:Wie heißt es denn dann und wie starte ich den Code? Bin ja zum Lernen hier... der Code macht vollautomatisch das, wofür er programmiert wurde. Er muß nicht extra gestartet werden.
Registriert seit: 15.10.2019
Version(en): 2019
Zitat:Code macht vollautomatisch das, wofür er programmiert wurde ok, aber dann kann der Code von UweD in diesem Fall nicht das tun, was er für mich soll, nämlich auf Befehl loslegen, die Daten für eine Spalte abzufragen, richtig? Dass das kein Marko ist, habe ich verstanden, aber ich hätte gerne eine Starthilfe, wie solche Codes funktionieren. Gibt es dazu einen Basisartikel? Wonach muss ich suchen?
00202
Nicht registrierter Gast
Hallo, :19: es ist ein Ereignis Code. :21: Es gibt verschiedene Ereignisse für ein Tabellenblatt. Dies ist das Worksheet.SelectionChange-Ereignis...Und den Code fügst du so ein. Das Ganze gibt es auch für " DieseArbeitsmappe" - dann muss man es nicht für jedes Tabellenblatt schreiben: :21:
Folgende(r) 1 Nutzer sagt Danke an Gast für diesen Beitrag:1 Nutzer sagt Danke an Gast für diesen Beitrag 28
• Jimmy_Pulp
Registriert seit: 05.09.2019
Version(en): Office 365
Hallo Jimmy Ich hatte doch geschrieben, wo der Code hinkopiert werden sollte. Zitat:- Rechtsclick auf den Tabellenblattreiter - Code anzeigen - Code dort eintragen Code der dort steht, reagiert auf Ereignisse; in dem Fall auf "Selection_Change" Also wenn in dem Worksheet eine Zelle (oder Bereich ) ausgewählt wird läuft der Code ohne manuelles Starten automatisch ab. Da das ja nicht immer gelten soll, wird am Anfang auf Einschränkungen geprüft. - 1) nicht loslaufen, wenn eine Zelle in Spalte A ausgewählt wurde - 2) nur wenn die Zeilennummer größer 1 ist - 3) nur, wenn in Zeile1 der ausgewählten Spalte ein Datum steht - 4) nur wenn in Spalte A der ausgewählten Zeile was drinsteht Wenn all das gegeben ist, wird der neue Wert abgefragt, in die Zelle eingetragen und die Zelle darunter ausgewählt. Das löst dann erneut den Code aus. Solange, bis in Spalte A nichts mehr steht. LG UweD
Folgende(r) 1 Nutzer sagt Danke an UweD für diesen Beitrag:1 Nutzer sagt Danke an UweD für diesen Beitrag 28
• Jimmy_Pulp
|