Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1752to1756
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Nur verschieben erlauben

Nur verschieben erlauben
25.04.2020 09:17:14
Ralf
Hallo Leute, ich würde gern Zellen so anpassen das nur das verschieben zwischen diesen Zellen erlaubt ist , dabei sollen die Zellen aber nicht ersetzt werden die Zellen sollen sich nur gegenseitig austauschen.
hier mal im Anhang eine Test Datei.
Es sind mehrere ablagen und zwischen den soll der wechsel stattfinden.
https://www.herber.de/bbs/user/137023.xlsx
Für eine Lösung wäre ich sehr dankbar.
Gruß
Ralf

27
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: so nicht nachvollziehbar ...
25.04.2020 09:36:53
neopa
Hallo Ralf,
... willst Du nun "verschieben" oder "wechseln". Kannst Du es mal an zwei Beispielen konkret aufzeigen/beschreiben?
Gruß Werner
.. , - ...
AW: so nicht nachvollziehbar ...
25.04.2020 10:36:32
Ralf
Hallo Werner
Ablage1 Salz soll mit Ablage2 Mehl getauscht werden. (Drag & Drop ) auf diese Funktion sollen die Ablagen beschränkt werden.soll sozusagen wie ein Regal Zuhause funktionieren.
AW: eine Möglichkeit wäre ...
25.04.2020 10:48:00
neopa
Hallo Ralf,
... Du schiebst ein "Mehl" außerhalb der Ablagen dann "Salz" in dessen Ablage und danach ""Mehl" in die vorherige Ablage von "Salz". Dazu kannst Du allerdings nicht mit "fixen" Rahmen arbeiten wie bisher.
Gruß Werner
.. , - ...
Anzeige
AW: mit VBA
25.04.2020 11:22:57
Ralf
Hallo Hary,
danke so soll das aussehen. Leider stürzt das vba ab wenn ich es schütze . Hast du noch eine Idee wie ich verhindere das jemand den Text ändert?
gruß
mit VBA möglich ...
25.04.2020 10:58:44
Matthias
Hallo Ralf,
mit VBA könnte man da was basteln. Wäre das eine Option?
Aber:
worher soll denn Excel wissen das Du Salz aus Ablage1 mit Mehl aus Ablage2 tauschen willst
und nicht Salz gegen Zucker austauschen willst?
Ich hab Dir hier mal schon ein Bsp. erstellet wo Du die Ablagen 1 & 2, sowie 2 & 3 komplett tauschen kannst.
https://www.herber.de/bbs/user/137027.xlsm
Man bräuchte aber mehr Infos was getauscht werden darf/soll.
Gruß Matthias
Anzeige
AW: mit VBA möglich ...
25.04.2020 11:54:04
Ralf
Danke für deine mühe
Drag & Drop also kein Button. Die Felder in den ablagen sollen untereinander tauschbar sein. hary hat es schon gut umgesetzt. Ich such noch die Möglichkeit die Zellen zu schürzen das der Text ( Verlinkung) nicht verändert werden kann.
gruß
Zellschutz und dann Blattschutz setzen ...
25.04.2020 11:59:01
Matthias
Im VBA-Code von hary musst Du dann nur noch ActiveSheet.Unprotect vor dem Tauschen setzen und am Ende wieder ActiveSheet.Protect.
Gruß Matthias
AW: Zellschutz und dann Blattschutz setzen ...
25.04.2020 12:11:03
Ralf

Option Explicit
Public erste As String, zweite As String, ersteformel As String, zweiteformel As String
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("D3:G10,I3:L10,N3:Q10,D14:G21,I14:L21,N14:Q21")) Is Nothing Then
Cancel = True
If erste = "" Then
erste = Target.Address
ersteformel = Target.Cells(1).Formula
End If
zweite = Target.Address
zweiteformel = Target.Cells(1).Formula
If erste  zweite And zweite  "" Then
Application.EnableEvents = False
Range(erste).Cells(1).Formula = zweiteformel
Range(zweite).Cells(1).Formula = ersteformel
erste = ""
zweite = ""
Application.EnableEvents = True
End If
End If
End Sub
Wo genau muß das hin?
Anzeige
AW: Zellschutz und dann Blattschutz setzen ...
25.04.2020 12:46:05
hary
Moin
Hab mal das Passwot hallo gesetzt. Kannst du aender,
Public erste As String, zweite As String, ersteformel As String, zweiteformel As String
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("D3:G10,I3:L10,N3:Q10,D14:G21,I14:L21,N14:Q21")) Is Nothing Then
ActiveSheet.Unprotect Password:="hallo"
Cancel = True
If erste = "" Then
erste = Target.Address
ersteformel = Target.Cells(1).Formula
End If
zweite = Target.Address
zweiteformel = Target.Cells(1).Formula
If erste  zweite And zweite  "" Then
Application.EnableEvents = False
Range(erste).Cells(1).Formula = zweiteformel
Range(zweite).Cells(1).Formula = ersteformel
erste = ""
zweite = ""
Application.EnableEvents = True
End If
ActiveSheet.Protect Password:="hallo"
End If
End Sub

gruss hary
Anzeige
übrigens Deine Lösung gefällt mir :-) Gruß owT
25.04.2020 12:52:40
Matthias
AW: Danke Matthias Gruß owT
25.04.2020 13:02:15
hary
.
AW: übrigens Deine Lösung gefällt mir :-) Gruß owT
25.04.2020 15:25:37
Ralf
Einfach nur TOP danke!!!
Wünsch eich beiden ein schönes WE
AW: übrigens Deine Lösung gefällt mir :-) Gruß owT
25.04.2020 20:42:47
Ralf
hab nochmal eine frage habe den VBA hier gefunden.
mit dem wird das Feld mit der rechten Maustaste eingefärbt.
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If ActiveCell.Interior.ColorIndex = 3 Then
ActiveCell.Interior.ColorIndex = xlNone
Else
ActiveCell.Interior.ColorIndex = 3
End If
End Sub

ist es möglich beide zu nutzen? rechts einfärben links verschieben?
AW: Frage zum einfaerben
26.04.2020 07:12:59
hary
Moin
Ja,ist moeglich.
Dazu Fragen;
Soll nur eine Zelle gefaerbt werden?
Einfaerben einer Zelle und nur in dem Bereich?
Einfaerben der getauschten Werte?
Erklaer mal bitte was du vorhast.
gruss hary
Anzeige
AW: Frage zum einfaerben
26.04.2020 07:51:53
Ralf
Morgen
Die Zelle die ich mit der linken Taste doppelt anklicke, soll sich rot einfärben. Wenn ich noch mal Doppel klick mache wieder zur alten Farbe zurück springen, mehrere sind nicht nötig.
Mit links färben und mit rechts tauschen. Die Farbe muß dabei nicht mit getauscht werden, außer der aufwand ist nicht Größer für dich.
Gruß
AW: Frage zum einfaerben
26.04.2020 08:14:38
Matthias
Hallo
Code ins Tabellnblatt
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If ActiveCell.Interior.ColorIndex  xlNone Then
OldColor = ActiveCell.Interior.ColorIndex
ActiveCell.Interior.ColorIndex = xlNone
Else
ActiveCell.Interior.ColorIndex = OldColor
End If
End Sub



Code in ein allgemeines Modul (z.B. Modul1)
Option Explicit
Public OldColor
In der Variable OldColor wird die Farbe der Zelle gespeichert die Du doppelklickst
Gruß Matthias
Anzeige
AW: Frage zum einfaerben
26.04.2020 08:44:15
Ralf
Danke Matthias, ich warte mal was hary zaubert.Vielleicht bekommt er das sogar hin, das die Farben beim tauschen mitgenommen werden. das wäre echt Top.
Gruß
AW: Frage zum einfaerben
26.04.2020 08:27:06
hary
Moin
Wenn ich noch mal Doppel klick mache wieder zur alten Farbe zurück springen,
Hast du die Zelle schon gefaerbt?
Mal zum Ablauf:
Du klickst doppelt auf eine Zelle, diese wird gefaerbt.
Doppelklick auf eine andere, jetzt wird getauscht
Jetzt soll die Farbe der ersten Zelle wieder entfernt werden?
dann kommt die Frage:
Die Farbe muß dabei nicht mit getauscht werden, außer der aufwand ist nicht Größer
Soll die Farbe der ersten Zelle mitgenommen werden.
Beschreib mal den Ablauf genauer. Warum links faerben und rechts tauschen?
gruss hary
Anzeige
AW: Frage zum einfaerben
26.04.2020 08:39:28
Ralf
In dem Viral-Regal soll sozusagen der Gegenstand ( Zucker) eingefärbt werden können, wenn er fast leer ist. linkedoppel Maus färben rechte Maus tauschen
Die Farbe soll also mit getauscht werden wenn das möglich ist. also wenn ich eine angefangenen Zucker gegen einen vollen Sack Mehl tausche, sollte jeder seine Farbe mitnehmen. Du kannst die Farben auch definieren wenn das einfacher ist rot angefangen grün voll.
AW: Frage zum einfaerben
26.04.2020 09:35:04
hary
Moin
Hier musst du die Zellen erst haendisch faerben.
Mit Rechtsklick
Const Bereich As String = "D3:G10,I3:L10,N3:Q10,D14:G21,I14:L21,N14:Q21"
Public erste As String, zweite As String, ersteformel As String, zweiteformel As String
Public Farbe1, Farbe2
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range(Bereich)) Is Nothing Then
ActiveSheet.Unprotect Password:="hallo"
Cancel = True
If erste = "" Then
erste = Target.Address
ersteformel = Target.Cells(1).Formula
Farbe1 = Target.Cells(1).Interior.Color
End If
zweite = Target.Address
zweiteformel = Target.Cells(1).Formula
Farbe2 = Target.Cells(1).Interior.Color
If erste  zweite And zweite  "" Then
Application.EnableEvents = False
Range(erste).Cells(1).Formula = zweiteformel
Range(erste).Cells(1).Interior.Color = Farbe2
Range(zweite).Cells(1).Formula = ersteformel
Range(zweite).Cells(1).Interior.Color = Farbe1
erste = ""
zweite = ""
Farbe1 = -4142
Farbe2 = -4142
Application.EnableEvents = True
End If
ActiveSheet.Protect Password:="hallo"
End If
End Sub

Mit den Faerben hab ich noch keinen Ansatz. Es sollen nur Rot und Gruen genutzt werden.OK
Wann/wie soll Excel unterscheiden ob voll oder fast leer. Beim Doppelklick.
gruss hary
Anzeige
AW: Frage zum einfaerben
26.04.2020 10:14:15
Ralf
"wie soll Excel unterscheiden ob voll oder fast leer. Beim Doppelklick."
weiß ich nicht ;). Aber er kann auch hin und herspringen zwischen den zwei Farben. wenn das nicht geht könnte man einen botton machen der zwischen zwei Farben die markierte Zelle hin und her färbt? hab jetzt mal versuch Mattias vb mit einzubauen da kommt aber Fehler.
bei mir kommt kein Fehler ... owT
26.04.2020 10:30:15
Matthias
Du musst wie beim Rechtsklick den Blattschutz ...
26.04.2020 10:32:36
Matthias
... entfernen und nach dem Färben den Blattschutz wieder setzen.
Gruß Matthias
AW: Frage zum einfaerben
26.04.2020 10:56:51
hary
Moin
Ok, dann probier mal so.
Bei Doppelklick:
Sollte eine Zelle keine Farbe enthalten wird erstmal Rot. Anschliessend kannst du per Doppelklick wechseln zwischen Rot und Gruen.
Bei Rchtsklick:
Wird getauscht. Auch die Farbe.
Const Bereich As String = "D3:G10,I3:L10,N3:Q10,D14:G21,I14:L21,N14:Q21"
Public erste As String, zweite As String, ersteformel As String, zweiteformel As String
Public Farbe1, Farbe2
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range(Bereich)) Is Nothing Then
ActiveSheet.Unprotect Password:="hallo"
Cancel = True
If erste = "" Then
erste = Target.Address
ersteformel = Target.Cells(1).Formula
Farbe1 = Target.Cells(1).Interior.Color
End If
zweite = Target.Address
zweiteformel = Target.Cells(1).Formula
Farbe2 = Target.Cells(1).Interior.Color
If erste  zweite And zweite  "" Then
Application.EnableEvents = False
Range(erste).Cells(1).Formula = zweiteformel
Range(erste).Cells(1).Interior.Color = Farbe2
Range(zweite).Cells(1).Formula = ersteformel
Range(zweite).Cells(1).Interior.Color = Farbe1
erste = ""
zweite = ""
Farbe1 = -4142
Farbe2 = -4142
Application.EnableEvents = True
End If
ActiveSheet.Protect Password:="hallo"
End If
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range(Bereich)) Is Nothing Then
ActiveSheet.Unprotect Password:="hallo"
Cancel = True
With Target.Cells(1)
If .Interior.ColorIndex = -4142 Then
.Interior.Color = vbRed
Else
.Interior.Color = IIf(.Interior.Color = vbRed, vbGreen, vbRed)
End If
End With
ActiveSheet.Protect Password:="hallo"
End If
End Sub

gruss hary
Anzeige
AW: Frage zum einfaerben
26.04.2020 15:26:17
Ralf
Genau so.. geil hary! Ich danke dir , das bringt mich weiter.
Gruß
AW: Zellschutz und dann Blattschutz setzen ...
25.04.2020 12:51:08
Matthias

If erste  zweite And zweite  "" Then
ActiveSheet.Unprotect
Application.EnableEvents = False
Range(erste).Cells(1).Formula = zweiteformel
Range(zweite).Cells(1).Formula = ersteformel
erste = ""
zweite = ""
Application.EnableEvents = True
ActiveSheet.Protect
End If


und schau mal nach ob Deine Events auch wieder auf True stehen.
Im Direktfenster(Strg+G )prüfen:
?Application.EnableEvents und Enter drücken. Das Fragezeichen vor der Abfrage ist wichtig!
Da steht dann als Ergebnis WAHR oder FALSCH
Wenn dort FALSCH steht musst Du sie wieder einschalten.
Kannst Du auch wieder im Direktfenster machen
Application.EnableEvents = True
Gruß Matthias

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige