Microsoft Excel

Herbers Excel/VBA-Archiv

Wert in nächste leere Zelle schreiben...

Betrifft: Wert in nächste leere Zelle schreiben... von: Michael
Geschrieben am: 31.07.2014 16:14:00

Hallo,
bin neu hier (gerade reingestolpert) und habe gleich mal 'ne Excel-Frage (was sonst):

ich habe mehrere Tabellenblätter (z.Z. 14), in die ich Preise (zur Ermittlung des Durchschnittspreises) eintrage. Jedes Gerät hat eine eigene 'Ausgabezelle', welche den entsprechenden Durchschnittspreis anzeigt. Jedoch muß ich bislang immer bis zur letzten freien Zelle der entsprechenden Spalte runterscrollen, um einen weiteren Wert einzutragen...
nun die Frage:

wie kann ich es erreichen, immer (pro Gerät) eine bestimmte Zelle als 'Eingabezelle' zu verwenden? Der eingegebene Wert soll dann (nach drücken der 'ENTER'-Taste) in die jeweils nächste freie Zelle der entsprechenden Spalte eingetragen werden und anschließend die 'Eingabezelle' wieder gelöscht werden. Ich hatte diesbezüglich ein (oder mehrere) Makro(s) im Sinne... mal 'n Beispiel: Zelle C3 soll die Eingabezelle sein: Wert reinschreiben, ENTER drücken, Wert aus C3 wird in die erste freie Zelle der Spalte C kopiert und der Inhalt von C3 sogleich wieder gelöscht (C3 ist leer). Wie ließe sich soetwas realisieren?

Für Antworten bedanke ich mich schonmal im Voraus ind verbleibe mit frdl. Gruß

Michael

  

Betrifft: AW: Wert in nächste leere Zelle schreiben... von: Beverly
Geschrieben am: 31.07.2014 16:52:39

Hi michael,

das geht z.B. mit folgendem Code im Codemodul des Tabellenblattes:

Private Sub Worksheet_Change(ByVal Target As Range)
   Dim lngLetzte As Long
   If Target.Address = "$C$3" Then
      lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 3)), Cells(Rows.Count, 3).End(xlUp).Row, Rows. _
Count)
      Cells(lngLetzte + 1, 3) = Target
      Target.ClearContents
   End If
End Sub

GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Damit das funktioniert... von: Daniel
Geschrieben am: 31.07.2014 17:47:10

...sollte man noch die Application.EnableEvents ergänzen:

Private Sub Worksheet_Change(ByVal Target As Range)
   Dim lngLetzte As Long
   If Target.Address = "$C$3" Then
      lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 3)), Cells(Rows.Count, 3).End(xlUp).Row, Rows.  _
_
Count)
      Application.EnableEvents = False
      Cells(lngLetzte + 1, 3) = Target
      Target.ClearContents
      Application.EnableEvent = True
   End If
End Sub
Sich selbst aufrufende Eventmakros sind nur äusserst selten sinnvoll.

Gruß Daniel


  

Betrifft: Das ist korrekt... von: Beverly
Geschrieben am: 31.07.2014 18:39:51

... - hatte den Code ohne zu testen gepostet, sonst wäre mir das aufgefallen. ;-)


GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Das ist korrekt... von: Michael
Geschrieben am: 31.07.2014 19:34:29

Zunächst "Danke" an Beverly und Daniel, ich werde diesen Vorschlag ausprobieren und dann berichten...

Gruß, Michael


 

Beiträge aus den Excel-Beispielen zum Thema "Wert in nächste leere Zelle schreiben..."