Beiträge: 3
Themen: 1
Registriert seit: May 2026
Bewertung:
0
Office-Version:
Hallo zusammen,
ich habe folgendes Thema:
Ich würde gerne in einem definierten Bereich (zB A1:C3) Daten eingeben und dabei die bestehenden Daten in den Zellen nach folgender Logik verschieben lassen.
IST:
A1: 1
A2: 2
A3: 3
B1: 4
B2: 5
B3: 6
C1: 7
C2: 8
C3: 9
Dann wird bei A3 ein neuer Wert eingegeben, zB 10 und die Tabelle soll dann wie folgt aussehen
A1: 1
A2: 2
A3: 10
B1: 3
B2: 4
B3: 5
C1: 6
C2: 7
C3: 8
und der Wert 9 soll in einen weiteren definierten Bereich verschoben werden (zB A6:C9)
die KI hat mir eine VBA Lösung vorgeschlagen, die hat aber Fehler gehabt und mein Problem nicht gelöst. Ich selbst kann leider nicht VBA programmieren.
Habt ihr eine Lösung?
Beiträge: 483
Themen: 30
Registriert seit: May 2019
Bewertung:
16
Office-Version:
Hallo,
wie wäre es mit einer Beispiel Tabelle?
In diese Tabelle trägst du händisch, die Ausgangslage
und dein Wunschergebnis ein.
Damit kann man dir eventuell helfen.
MfG Günter
(Win11, MS-Office 2024)
Wenn gelöst, dann bitte Thema als "Erledigt" kennzeichnen.
Beiträge: 73
Themen: 0
Registriert seit: May 2021
Bewertung:
6
Office-Version:
26.05.2026, 11:49
(Dieser Beitrag wurde zuletzt bearbeitet: 26.05.2026, 12:13 von PetrolMaxxe.)
sorry jetzt erst entdeckt, dass es 3 spaltig ist.
Gruß Uwe
Beiträge: 73
Themen: 0
Registriert seit: May 2021
Bewertung:
6
Office-Version:
Hallo,
so jetzt 3x3 spaltig.
Zahlenspiel Spezial.xlsm (Größe: 18,81 KB / Downloads: 7)
Gruß Uwe
Beiträge: 6
Themen: 0
Registriert seit: Feb 2020
Bewertung:
1
26.05.2026, 13:02
(Dieser Beitrag wurde zuletzt bearbeitet: 26.05.2026, 13:15 von UweD.)
Hallo
- Rechtsclick auf den Tabellenblattreiter
- Code anzeigen
- Dort diesen Code einfügen
Code: Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fehler
Const APPNAME = "Worksheet_Change"
Dim RNG1 As Range, Z, i As Long
Dim RFArr(), Neuwert As Variant
Set RNG1 = Range("A1:C3")
RFArr = Array("A1", "A2", "A3", "B1", "B2", "B3", "C1", "C2", "C3", "A6", "A7", "A8", "B6", "B7", "B8", "C6", "C7", "C8")
If Not Intersect(RNG1, Target) Is Nothing Then
For Each Z In Target
With Application
Neuwert = Z.Value
.EnableEvents = False
.Undo
For i = UBound(RFArr) To LBound(RFArr) + 1 Step -1
If Z.Address(False, False) <> RFArr(i) Then
Range(RFArr(i)).Value = Range(RFArr(i - 1)).Value
Else
Range(RFArr(i)).Value = Neuwert
Exit For
End If
Next i
' Falls erste Position getroffen wurde:
If Z.Address(False, False) = RFArr(LBound(RFArr)) Then
Range(RFArr(LBound(RFArr))).Value = Neuwert
End If
.EnableEvents = True
End With
Next
End If
'*** Fehlerbehandlung
Err.Clear
Fehler:
Application.EnableEvents = True
If Err.Number <> 0 Then MsgBox "Fehler in Sub """ & APPNAME & """" & vbCrLf _
& "Fehlernummer: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub
LG UweD
Beiträge: 3
Themen: 1
Registriert seit: May 2026
Bewertung:
0
Office-Version:
27.05.2026, 08:56
(Dieser Beitrag wurde zuletzt bearbeitet: 27.05.2026, 09:32 von eltoro.)
Servus Uwe,
danke für den Code. Die Eingabe funktioniert grundsätzlich, aber wenn ich eine Zelle oder einen Bereich löschen möchte, wird der Bereich auch weitergeschoben.
Würdest du dir das bitte nochmals ansehen.
Danke!
lG
Mir ist gerade noch etwas aufgefallen. Wenn ich im ersten Bereich Daten eingebe, werden diese verschoben (auch in den zweiten Bereich hinein). Wenn ich jedoch im zweiten Beriech Daten eingebe, werden diese nicht verschoben.
Beiträge: 6
Themen: 0
Registriert seit: Feb 2020
Bewertung:
1
Was soll geschehen, wenn die Zelle Leer ist und nun Inhalt bekommt?
Was, wenn die Zelle Inhalt hat und nun geleert wird?
den 2. Bereich kannst du so hinzufügen:
Code: Set RNG1 = Range("A1:C3, A6:C8")
LG UweD
Beiträge: 3
Themen: 1
Registriert seit: May 2026
Bewertung:
0
Office-Version:
wenn die Zelle leer ist, und ein Inhalt einfügt wird, dann soll der REst nicht verschoben werden, sondern einfach die Zelle gefüllt werden. Wenn die Zelle geleert wird, dann soll alles was danach ist, vorgezogen werden.
lG
|