AW: Cut/Paste bei Klick in Zelle
13.01.2017 10:57:11
Silas
Hallo Olli,
sorry, dass ich erst so spät antworte, aber ich kam nicht früher dazu. Ich habe den Code jetzt nochmal so geändert, dass er genau das macht, was du willst und du ihn leicht verändern kannst. In den Kommentaren des Codes (Du weißt aber, was Kommentar und was Code ist, oder?) steht genau beschrieben, was du machen musst, um Änderungen vorzunehmen. Falls du das immer noch nicht verstehst, oder du noch mehr ändern willst, dann würde ich dir empfehlen, dich etwas in VBA einzulesen.
Hier der Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.EnableEvents = False
Dim rng As Range
Dim i As Integer
Dim r As Integer
Dim ersteSpalte_Range1 As String
Dim letzteSpalte_Range1 As String
Dim ersteSpalte_Range2 As String
Dim letzteSpalte_Range2 As String
Dim ersteZeile As Integer
Dim letzteZeile As Integer
Dim klickSpalte1 As String
Dim klickSpalte2 As String
Dim klickRange1 As Range
Dim klickRange2 As Range
' Dies ist die erste Zeile der beiden Tabellen/Ranges.
ersteZeile = 2
' Dies ist die letzte Zeile der beiden Tabellen/Ranges. Beide Werte kannst du verändern.
letzteZeile = 60
' Dies sind die Spalten, die den Bereich eingrenzen, der ausgeschnitten werden soll.
' Möchtest du statt den Spalten A-F die Spalten C-K ausschneiden, musst du hier das "A" _
durch ein "C" ...
' ... und das "F" durch ein "K" ersetzen.
ersteSpalte_Range1 = "A"
letzteSpalte_Range1 = "F"
' Dies sind die Spalten, die den anderen Bereich eingrenzen, der ausgeschnitten werden soll. _
' Möchtest du statt den Spalten U-Z die Spalten S-Y ausschneiden, musst du hier das "U" _
durch ein "S" ...
' ... und das "Z" durch ein "Y" ersetzen.
ersteSpalte_Range2 = "U"
letzteSpalte_Range2 = "Z"
' Im Folgenden gibt man die beiden Spalten an, auf die man drücken muss, um die Werte _
auszuschneiden.
' Möchtest du auf Spalte "H" klicken, um die Spalten A-F auszuschneiden, ...
' ... musst du hier das "J" durch ein "H" ersetzen.
klickSpalte1 = "J"
' Möchtest du auf Spalte "T" klicken, um die Spalten U-Z auszuschneiden, ...
' ... musst du hier das "AD" durch ein "T" ersetzen usw.
klickSpalte2 = "AD"
Set klickRange1 = Range(Cells(ersteZeile, GetCol("" & klickSpalte1)), Cells(letzteZeile, _
GetCol("" & klickSpalte1)))
Set klickRange2 = Range(Cells(ersteZeile, GetCol("" & klickSpalte2)), Cells(letzteZeile, _
GetCol("" & klickSpalte2)))
Set rng = Union(klickRange1, klickRange2)
If Not Application.Intersect(Target, rng) Is Nothing Then
If ActiveCell.Column = GetCol("" & klickSpalte1) Then
For i = ersteZeile To letzteZeile
If Cells(i, GetCol("" & ersteSpalte_Range2)).Value = "" Then
r = Target.Row
Range(Cells(Target.Row, GetCol("" & ersteSpalte_Range1)), Cells(Target.Row, _
GetCol("" & letzteSpalte_Range1))).Cut _
Range(Cells(i, GetCol("" & ersteSpalte_Range2)), Cells(i, GetCol("" & _
letzteSpalte_Range2)))
Range(Cells(r + 1, GetCol("" & ersteSpalte_Range1)), Cells(letzteZeile, _
GetCol("" & letzteSpalte_Range1))).Cut Cells(r, GetCol("" & ersteSpalte_Range1))
Exit For
End If
Next i
ElseIf ActiveCell.Column = GetCol("" & klickSpalte2) Then
For i = ersteZeile To letzteZeile
If Cells(i, GetCol("" & ersteSpalte_Range1)).Value = "" Then
r = Target.Row
Range(Cells(Target.Row, GetCol("" & ersteSpalte_Range2)), Cells(Target.Row, _
GetCol("" & letzteSpalte_Range2))).Cut _
Range(Cells(i, GetCol("" & ersteSpalte_Range1)), Cells(i, GetCol("" & _
letzteSpalte_Range1)))
Range(Cells(r + 1, GetCol("" & ersteSpalte_Range2)), Cells(letzteZeile, _
GetCol("" & letzteSpalte_Range2))).Cut Cells(r, GetCol("" & ersteSpalte_Range2))
Exit For
End If
Next i
End If
End If
Application.EnableEvents = True
End Sub
Function GetCol(col As String) As Integer
GetCol = Range("" & col & "1").Column
End Function
Beachte, dass ich noch eine kleine Funktion (GetCol) geschrieben habe. Gibt man ihr den Buchstaben einer Spalte, bekommt man den Spaltenindex zurück (z.B. "H" -> 8).
Ich hoffe, du kannst jetzt damit arbeiten! Achte einfach nur auf den Abschnitt des Codes, der auch kommentiert ist.
Grüße
Silas