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.

Marko Eingabeaufforderung eine Zelle nach der anderen
#1
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
Antworten Top
#2
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
[-] Folgende(r) 1 Nutzer sagt Danke an Werner.M für diesen Beitrag:
  • Jimmy_Pulp
Antworten Top
#3
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
Antworten Top
#4
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
Antworten Top
#5
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
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#6
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...
Antworten Top
#7
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.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#8
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?
Antworten Top
#9
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:
________
Servus
Case
[-] Folgende(r) 1 Nutzer sagt Danke an Case für diesen Beitrag:
  • Jimmy_Pulp
Antworten Top
#10
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:
  • Jimmy_Pulp
Antworten Top


Gehe zu:


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