Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Nach Copy und Paste eines Kontextmenues bleibt dies in der falschen Spalte erhalten

Frage Microsoft Microsoft Office

Mitglied: captainchaos666

captainchaos666 (Level 1) - Jetzt verbinden

28.01.2007, aktualisiert 11.02.2007, 3731 Aufrufe, 4 Kommentare

Hallo,
ich sollte mal wieder den Rat eines Excelspezialsten habe! Ich habe eine Excelliste mit VBA für Kontextmenüs


Mein programmierter Syntax:

If Not Intersect(Target, Range("A2:A10")) Is Nothing Then
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="Auswahl 1, Auswahl 2, Auswahl 3, Auswahl 4, Auswahl 5"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End If

Die Auswahl findet von Zelle A2 bis A10 statt, das funktioniert auch soweit. Wenn jetzt allerdings jemand die Zelle A2 nach XY kopiert so habe ich die Auswahl dann immer in XY. Auch Excel neu starten hilft nicht!

Gibt es eine Möglichkeit dies zu unterbinden, damit bei einem ausversehentlichem Copy und Paste das Kontextmenü nicht übernommen wird?


Dank euch

Gruß Alex
Mitglied: bastla
28.01.2007 um 11:21 Uhr
Hallo captainchaos666!

Da anscheinend gerade kein Excelspezialst in der Nähe ist, versuch ich's mal ...

Programmtechnisch könntest Du den Rest des Arbeitsblattes überwachen und nach dem Einfügen die Gültigkeitsprüfung wieder entfernen, also etwa:
01.
Private Sub Worksheet_Change(ByVal Target As Range) 
02.
If Intersect(Target, Range("A2:A10")) Is Nothing Then 
03.
    Target.Validation.Delete 
04.
End If 
05.
End Sub
Inwieweit die Performance darunter leidet, müsstest Du testen.

Ansonsten wäre es vermulich aber sinnvoll, ein "ausversehentliches Copy und Paste" zu erschweren, indem Du möglichst viele Zellen des Arbeitsblattes mit dem Blattschutz vor Veränderungen schützt.
Sollte tatsächlich ein Kopiervorgang nötig sein, müsste dieser per "Inhalte einfügen... / Werte" und Esc abgeschlossen werden - besser wäre es aber vermutlich, anstatt den Inhalt zu kopieren einen Zellbezug einzusetzen (=A5).

Grüße
bastla
Bitte warten ..
Mitglied: captainchaos666
28.01.2007 um 12:51 Uhr
Hallo bastla,
Danke für dein Antwort, bei einer Auswahl funktioniert es. Ich habe allerdings mehrere Kontextmenüs welche voneinander abhängig sind. Gibt es keine Möglichkeit beim öffnen der Datei die falsch platzierten Kontextmenüs zu entfernen.

Kannst du mir noch genauer erklären was du mit deinem Syntax genau machst, ich bin wirklich kein Excelspezialist!

Danke

Alex
Bitte warten ..
Mitglied: bastla
28.01.2007 um 15:05 Uhr
Hallo captainchaos666!

Wenn Du mehrere Bereiche hast, in denen eine Gültigkeitsprüfung erlaubt sein soll, musst Du diese einzeln beim Ändern überprüfen (so kann sehr wahrscheinlich - Einschränkung siehe unten - keine unerwünschte Zelle ein "Kontextmenü" erhalten):

01.
Private Sub Worksheet_Change(ByVal Target As Range) 
02.
bDel = True 'Löschen, außer geänderte Zelle ist in den folgenden Bereichen 
03.
If Not Intersect(Target, Range("A2:A10")) Is Nothing Then bDel = False 'nicht löschen 
04.
If Not Intersect(Target, Range("B2:B5")) Is Nothing Then bDel = False 'nicht löschen 
05.
... 
06.
If bDel Then Target.Validation.Delete 'Schalter steht nocht auf "True", daher löschen 
07.
End Sub
Der Schalter "bDel" steht für "Gültigkeitskontrolle löschen" und wird zunächst auf "True" gesetzt.
Mit der "Intersect"-Funktion wird eine "Überschneidung" von Zellbereichen überprüft - im konkreten Fall der geänderten Zelle(n) ("Target") und des angegebenen Bereiches "A2:A10" etc. Liegt die geänderte Zelle nicht im überprüften Bereich, gibt die Funktion den Wert "Nothing" zurück. "Not Intersect ..." bedeutet dann also: "liegt nicht nicht im Testbereich", ist also eine Zelle des Bereiches, und daher ist ein Löschen nicht erforderlich - Schalter "bDel" auf "False" setzen.
Wenn nach Überprüfung aller von Dir festgelegten Bereiche der Schalter "bDel" immer noch auf "True" steht, liegt die geänderte Zelle also in keinem dieser Bereiche und die Gültigkeitsprüfung kann mit "Target.Validation.Delete" gelöscht werden.

Zu beachten wäre vielleicht noch, dass auch mehrere Zellen als "Target" aufscheinen können (zB eine Zelle wird kopiert und in einen vorher markierten Bereich aus mehreren Zellen eingefügt) - dann gilt: wenn auch nur eine Zelle des Zielbereiches im Testbereich liegt, wird bei keiner Zelle die Gültigkeitskontrolle entfernt (und natürlich auch dann nicht, wenn von einem Testbereich in einen anderen Testbereich kopiert wird).
Zur Ergänzung: Im zuerst geposteten Code war die Vorgangsweise umgekehrt: Wenn die veränderte Zelle nicht im Bereich "A2:A10" liegt, Gültigkeitsprüfung löschen.

Schließlich zum Ereignis "Worksheet_Change": Dieses wird ausgelöst, wenn sich der Inhalt (nicht zB das Ergebnis einer enthaltenen Formel oder die Formatierung) von Zellen ändert (auch zB gelöscht wird).
Noch zur Frage des Löschens beim Öffnen: Im Prinzip könntest Du auch einfach für alle Zellen die Gültigkeitsprüfung entfernen, da diese beim Auswählen einer Zelle ohnehin auch jetzt schon gelöscht und wieder neu zugeordnet wird - allerdings hättest Du damit noch nicht die (relative) Sicherheit für den "laufenden Betrieb".

Grüße
bastla
Bitte warten ..
Mitglied: captainchaos666
11.02.2007 um 14:34 Uhr
Hallo bastla,
Danke noch für deine Antwort, er funktioniert. Konnte leider den Thread bisher nicht als glöst markieren, da ich normal nur am WE Internetfähig bin!

Gruß Alex
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Server-Hardware
HP DL385 G2, Bildschirm bleibt schwarz, fährt nicht mehr hoch (13)

Frage von comping zum Thema Server-Hardware ...

Apache Server
Anzeige der falschen Website Apache2 vHotsts (3)

Frage von m.reeger zum Thema Apache Server ...

Windows Update
Package Publisher - Copy has failed falscher Parameter

Frage von Belloci zum Thema Windows Update ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...