Wie kann ich mithilfe eine Excel Buttons einen Zellinhalt im aktuellen Feld löschen und automatisch ein Feld nach Rechts verschieben?

1 Antwort

Angenommen die Spalte B wäre dies mit Offenen Rechnungen und C bezahlt
Range("C1").Value = Range("B1").Value 'Zunächst den Wert nach rechts kopieren.
Range("B1").Value "" 'dann anschließend die Zelle löschen.

Jagrimm 
Fragesteller
 04.10.2021, 06:44

Erstmal vielen dank für die Hilfe, und das scheint auch alles ziemlich schlüssig.
Wenn ich es jedoch als Makro erstelle, in meinem Fall auf Zelle G nach H, sagt er mit folgendes :
Sub Schaltfläche8_Klicken()

Range("G1").Value = Range("H1").Value

Range("G1").Value ""

End Sub

"Fehler beim Komilieren :
Unzulässige Verwendung einer Eigenschaft.
:(

0
Jagrimm 
Fragesteller
 04.10.2021, 14:35
@Jagrimm

und könnte ich diesen Button dann auch auf die Gesamte Spalte anwenden ? Unabhängig ob es jetzt G1, G20 oder G50 ist ? Bzw H ?
Vielen dank für die Hilfe "IchmalwiederXY"

0
IchMalWiederXY  04.10.2021, 18:17
@Jagrimm

Das Gleichheitszeichen war wohl 'untergegangen'.
Range("G1").Value = ""
Man kann auch die ganze Spalte zuweisen:
ALLES was in Spalte H steht wird nun nach Spalte G geschrieben. ABER es MÜSSEN die beiden gleich viele Anzahl zellen haben. KEIN (oder NUR identische) "Merge" von Zellen.
Range("G:G").Value = Range("H:H").Value

0
Jagrimm 
Fragesteller
 04.10.2021, 18:36
@IchMalWiederXY

ich habe es wohl etwas ungünstig formuliert.
Ich glaube warum es aktuell nicht funktioniert ist, da es um die aktive Zelle geht die ein Feld nach Rechts geschoben werden soll.
In meinem Fall einzelne Zellen aus G nach H.
Das Problem ist ja aber das es bei G1 nach H1 ja auch nur speziell auf diese Zellen ausgelegt ist. Wie genau bekomme ich es hin, dass es um die Aktive Zelle bzw markierte Zelle geht, die einfach ein Feld nach rechts geschoben werden soll ?
Tut mir leid für die Mühe bzw meine ungünstige Fomulierung.

0
Jagrimm 
Fragesteller
 04.10.2021, 18:38
@Jagrimm

hier habe ich es Makro aufzeichen lassen, was die Zelle erst kopiert, dann rechts daneben einfügt und dann die erste Zelle löscht.

  Range("G40:G41").Select

  Application.CutCopyMode = False

  Selection.Copy

  Range("H40:H41").Select

  ActiveSheet.Paste

  Range("G40:G41").Select

  Application.CutCopyMode = False

  Selection.ClearContents

das ganze müsste jetzt nur irgendwie unabhängig von der jeweiligen Zelle anwendbar sein. Sprich auf der Aktiven Zelle (irgendeine Zelle aus G) eine Zelle rechts daneben nach H

0
IchMalWiederXY  04.10.2021, 18:58
@Jagrimm

In
Selection.Address
steht die einzelne Zelle (Adresse) $B$1 oder auch der Bereich. $B$1:$B$10
je nach dem wieviel markiert wurde.
ACHTUNG: Man muss aber das Sheet auf dem man sich befindet "aktive" haben.
Ggf Worksheets("Tabelle1").Activate
voranstellen.
Wenn man es mit Copy löst dann kann man auch bei Bereichen lediglich das Ziel anwählen und Pasten
Range("G40:G41").Copy

  Range("H40").Pastespecial
  Application.CutCopyMode = False
"Select" im Besten Fall vermeiden, da dies "lange" dauert.
Range(Selection.address).Copy

  Range("H40").Pastespecial

  Application.CutCopyMode = False


1
Jagrimm 
Fragesteller
 04.10.2021, 20:13
@IchMalWiederXY

ich bin was das Makro Coden angeht leider ein blutiger anfänger, alles was ich eigentlich nur brauche ist ein funktionierender Code der eine von mir manuell markierte Zelle automatisch eine Zelle nach rechts verschiebt.
Leider bin ich nach deinem Text jetzt ganz raus und bekomme nichts funktionierendes hin :-(
Wenn du so einen funktionierenden Code hier einfügen würdest, wäre ich wirklich sehr dankbar da es mir viel Arbeit ersparen würde.

0
Jagrimm 
Fragesteller
 04.10.2021, 20:15
@IchMalWiederXY

Dieser Code hier von dir :
Range("C1").Value = Range("B1").Value '

Range("B1"). = Value ""
funktioniert ja zum Beispiel nur für die Zelle C1 nach B1. Perfekt wäre allerdings wenn es nicht um eine Bestimmte Zelle geht, sondern um eine manuell markierte Zelle.

0
IchMalWiederXY  05.10.2021, 16:00
@Jagrimm

Natürlich kann IM MOMENT wo man eine Zelle anklickt das "Select_Event" dazu nutzen sofort den Code ausführen zu lassen. Dies ist aber 'gefährlich', da dies sichlich nur auf bestimmte Zellen anzuwenden ist und nicht auf alle die man per Spaß ankllickt. Die Event Implementierung muss sehr sorgfältig verwendet werden, da man auch rekursives Verhalten produzieren kann, welches dann im Zweifel 'ewig' läuft. Es ist nötig, dass die Implementierung "genau" verstanden wird bevor man dies verwendet. ..Ergo, erst mal die VBA Kenntnisse von Anfänger auf "geübter" Anfänger verbessern. Den Code den ich posten könnte würde weitere Fragen nach sich ziehen. Dann wird es ein VBA Lehrgang. Also, alles gibt es bereits als Tutorials auf Youtube.

0