Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Excel - Schutz der Formatierung





Frage

Einen wunderschönen Guten Abend an euch alle! Es wurde mir schon ein paar mal geholfen in diesem Forum und auch deshalb komme ich immer wieder gerne mit meinen Fragen hier her. Ich habe folgendes Problem: Ich habe eine tolle Datenbank (Oliver und Maria haben auch einen wesentlichen´Beitrag dazu geleistet). Mit dieser Datenbank arbeiten aber ziemlich viele Leute, unter anderen auch ein paar Excel-Banausen. So kommt es häufig zu Verletzung von Formatirung und bedingte Formatierung. Ich suche nun eine Lösung, wie ich die Formatierung sperren kann. Ich habe es schon über Blattschutz versucht, aber das Problem ist, wenn jemand etwas ausschneidet und an eine andere Stelle wieder einfügt, wird die ausgeschnittene Formatierung einech weg. Es passiert auch öfters, dass durch das Kopieren die bedingte Formatierung mitkopiert wird. Ich weiß, dass ich nur Inhalte einfügen kann, aber die Mitbenutzer sind leider nicht so lernfähig. Wäre also nett, wenn jemand eine Lösung parat hätte, mir diese mitzkuteilen. Vielen Dank im Voraus!

Antwort 1 von Teddy7

Was denn nun ? Datenbank oder Excel ? (Ich krieg immer Zuckungen, wenn jemand ein Excel-Chart als Datenbank bezeichnet *g*).
In einer Datenbank - also z.B. Access kann man Formatierung recht wirksam schützen.
In einem Excel-Chart hat man ausser Blattschutz keine Chance.

Letzte Rettung: ein Makro schreiben, dass beim Öffnen des Excel-Charts die Formatierungen neu setzt.

Gruß
Teddy

Antwort 2 von naomi10123

Guten Morgen!
Vielen Dank für deine Antwort.
Ich habe schon ein paar Makros ausprobiert, die ich im Netz gefunden habe, aber leider funktioniert keiner wirklich. Ich glaube auch, dass ich die "Datenbank" eher mit Access überarbeiten soll.
Trotzkdem vielen Dank für deine Hilfe.
LG

Antwort 3 von Teddy7

Wenn´s nur um das Makro geht kann ich Dir helfen. Allerdings nicht umsonst.
Gruß
Teddy

Antwort 4 von coros

Hallo,

man müsste erst mal wissen, warum kopieren die Kollegen. Besteht die Möglichkeit, die Kopierfunktion in der Exceldatei zu unterbinden, so dass die beschriebenen Fehler nicht auftreten können?
Um zu helfen benötigt man schon mehr Hintergrundwissen.

@Teddy: Findest Du es nicht etwas daneben, in einem Forum, bei dem der Leitsatz "kostenlose und kompetente Hilfe bei Computerproblemen" ist , Deine kostenpflichtige Hilfe anzubieten? Sorry, aber das passt wohl eher nicht.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 5 von naomi10123

Hallo Oliver!
Vielen Dank für deine Hilfe.
Ja das Kopieren ist hier erforderlich. Die Datei ist ein Zimmerspiegel und die Gästeinformationen müssen in jedem Zimmer nach jedem abgelaufenem Tag von der Anreisespalta in die "Im-Haus-Spalte" bzw. Abreisespalte kopiert werden. Auch wenn ein Zimmerumzug stattfindet, müssen die Daten von einem Zimmer ins andere Kopiert werden. Außerdem sind da noch verschidene Cods, wie zum Beispiel Trace oder Selbstzahler, die mit bedingter Formatierung gestlatet sind.
Das Kopieren ist also ausdrücklich erwünsch. Das grokße Problem dabei ist das Ausschneiden. Die Kollegen verstehen einfach nicht, dass beim Ausschneiden auch die Formatierung ausgeschnitten wird. Kontnrett sind das die bedingte Formatierungen, Gültigkeitsprüfungen und Rahmen.
Damit ich nicht jedes mal die Datei nach Fehler durch suchen muss, suche ich also eine möglichkeit, wo entweder das Ausschneiden komplett unterbunden wird, oder wo die Formatierung und die Gültigkeitsprüfung nicht formatiertbar wäre. Ich habe auch schon 2 oder 3 Makros im Netz gefunden, die Das Ausschneiden unterbinden sollen, aber es hat leider nicht funktioniert. Zumindest bei mir nicht.
Wenn du die Datei zum anschauen brauchst, sage bitte bescheid. Nur zur Erinnerung, du haNNst für diese Datei schon zwei Mkros geschrieben. Und zwar sehr gute Makros. Damals war auch die Maria an der Sach beteiligt und Ihr beide habt mir wirklich supertoll geholfen.
Nochmals vielen Dank im Voraus.
LG Roman

Antwort 6 von coros

Hallo Roman,

nachfolgend 2 Makros, die Dir die Ausschneidefunktion deaktivieren und wieder aktivieren. Kopiere die nachfolgenden Makros in ein StandardModul und starte diese.

Option Explicit

Sub Funktionen_aktivieren()
'Tastenkombinationen für Ausschneidefunktion aktivieren
Application.OnKey "^x"

'Drag & Drop einschalten
Application.CellDragAndDrop = True

'Schaltflächen in Menüleiste => Bearbeiten aktivieren
'Ausschneiden
procControlEnableDisable 21, True

End Sub

Sub Funktionen_deaktivieren()

'Tastenkombinationen  für Ausschneidefunktion deaktivieren
Application.OnKey "^x", ""

'Drag & Drop ausschalten
Application.CellDragAndDrop = False

'Schaltflächen in Menüleiste => Bearbeiten deaktivieren
'Ausschneiden
procControlEnableDisable 21, False
End Sub

Sub procControlEnableDisable(intId As Integer, _
bolStatus As Boolean)

Dim cmbSuche As CommandBar
Dim cmbcSteuerelement As CommandBarControl

On Error Resume Next

For Each cmbSuche In Application.CommandBars
Set cmbcSteuerelement = _
cmbSuche.FindControl(ID:=intId, recursive:=True)

If Not cmbcSteuerelement Is Nothing Then
cmbcSteuerelement.Enabled = bolStatus
End If
Next

End Sub


Wenn Du das Makro zum Deaktivieren beim Starten und das Makro zum Aktivieren beim Beenden der Exceldatei ausführen lässt, sind diese Funktionen in der Exceldatei deaktiviert. Aber nicht vergessen, diese Funktionen auch wieder beim Beenden zu aktivieren, da diese sonst dauerhaft deaktiviert bleiben.

Ich hoffe, Du kommst klar. Bei Fragen melde Dich.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 7 von Teddy7

& coros Das ist ja wohl meine Sache wie viel ich bereit bin kostenlos zu helfen. Wenn man das richtig machen will, dann ist das ziemlich Arbeit und kostet mehr Zeit als ich bereit bin kostenlos zu leisten.
Wenn Du mal so hier so viel Hilfe gegeben hast wie ich dann darfst Du wieder mitreden.

Antwort 8 von coros

Hallo Teddy,

ich glaube schon, dass ich hier mitreden kann. Denn woher willst Du denn wissen, wieviele Antworten ich hier bereits gegeben habe. Ich bin der Meinung, dass ich seid 2001 hier berits genug Antworten gegeben habe um mitreden zu können und diese alle umsonst.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 9 von naomi10123

Also als erstes vielen lieben Dank an Oliver!!!
Ich habe es noch nicht ausprobiert, aber muss einfach mal hier eines loswerden!
Lieber Teddy!
Der Oliver ist sehr häufig da und steht immer mit Rat und Tat zur Verfügung. Er ist für mich der Superchecker.
Aus meiner Sicht hat er auch das Recht, wenn er darauf hinweist, dass dieses Forum ausschließlich kostenlose Hilfe anbietet!
Es ist zwar dein Problem, wenn du Geld dafür verlangst, aber bedenke bitte, wenn ich an eine so professionelle und kostpflichtige Lösung, wie du hier zum Anbieten scheinst, interessiert wäre, würde ich mich an eine dafür speziel eingerichtete Webseite richten und nicht hier die Frage ins Forum stellen.
Ich kann dir aber versichern, dass bis jetzt alle Antworten und Hilfestellungen die ich hier erhalten habe HÖCHST PROFESSIONEL waren!!!
In diesem Sinne:
Vielen Dank an alle für Ihren Bemühungen - ihr seid alle spitze!
LG Roman

Antwort 10 von Teddy7

Das will ich so nicht stehen lassen.
Es gibt einen Unterschied zwischen helfen und dem Angebot es "im Auftrag" zu machen. Mein Angebot war, mich in Dein Excelchart einzulesen, festzustellen welche Formatierungen Du verwendest und dann ein Makro zu schreiben, das immer beim Öffnen des Charts diese Formatierungen setzt. Also eine Lösung die den Usern erlauben würde weiterhin so zu arbeiten wie sie es gewohnt sind. Das ist schätzungsweise eine Stunde Arbeit und ich hätte dafür 30 Euro haben wollen.
Die "professionelle Website" möchte ich sehen, bei der Du das bekommst.
Das ist einfach eine Frage von Angebot und Nachfrage. Ich bin nicht bereit eine Stunde umsonst zu helfen. Wer das Angebot nicht annehmen möchte - auch gut. Ist doch kein Problem dabei. Ich verbitte mir nur, deswegen von links angelabert zu werden. Enttäuschend, das das gerade Oliver ist, dem ich in der Anfangszeit auch schon mal geholfen habe.
So - jetzt habe ich mir den Frust runter geschrieben und gut is.
Hoffe, Du kommst mit der Lösung zurecht.
Gruß
Teddy

Antwort 11 von naomi10123

Liber Teddy!
Ich habe doch geschrieben, dass das dein gutes Recht ist, Geld zu verlangen. Ich kann aber nur nach wie vor bestätigen, dass es eher in einem kostenlosen Forum nicht erwartet wird. Ich finde es OK, aber du darfst mir nicht böse sein, wenn ich die kostenlose Hilfe von Oliver in Anspruch nehme, denn die ist eigentlich immer einwandfrei.
LG Roman

Antwort 12 von naomi10123

Hallo Oliver!
Nochmals vielen lieben Dank für dein Makro! In einem losen Arbeitsblatt funktioniert dieses Makro erwartungsgemäß einwandfrei, wie alle deine Makros.
Wenn ich das Makro aber in meine Datei einfüge gibt er eine Fehlermeldung ab: Nach EndSub usw. dürfen nur Kommentare stehen. Der Sheet sieht so aus:

Option Explicit

Sub Funktionen_aktivieren()
'Tastenkombinationen für Ausschneidefunktion aktivieren
Application.OnKey "^x"

'Drag & Drop einschalten
Application.CellDragAndDrop = True

'Schaltflächen in Menüleiste => Bearbeiten aktivieren
'Ausschneiden
procControlEnableDisable 21, True

End Sub

Sub Funktionen_deaktivieren()

'Tastenkombinationen für Ausschneidefunktion deaktivieren
Application.OnKey "^x", ""

'Drag & Drop ausschalten
Application.CellDragAndDrop = False

'Schaltflächen in Menüleiste => Bearbeiten deaktivieren
'Ausschneiden
procControlEnableDisable 21, False
End Sub

Sub procControlEnableDisable(intId As Integer, _
bolStatus As Boolean)

Dim cmbSuche As CommandBar
Dim cmbcSteuerelement As CommandBarControl

On Error Resume Next

For Each cmbSuche In Application.CommandBars
Set cmbcSteuerelement = _
cmbSuche.FindControl(ID:=intId, recursive:=True)

If Not cmbcSteuerelement Is Nothing Then
cmbcSteuerelement.Enabled = bolStatus
End If
Next

End Sub

Option Explicit

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

If Target.Column = 14 And Target.Row >= 4 And Target.Row <= 152 Then
If LCase(Target.Cells.Value) = LCase("Trace") Or _
UCase(Target.Cells.Value) = UCase("Trace") Then
MsgBox "Traces bitte nur an dem Tag eintragen, an dem sie tatsächlich stattfinden! Hier bitte nur das Datum und dem Preis für die Traces eintraagen! zB 'Pr. 1.1.' und darunter '50,-' ", vbCritical, "Info..."
Target.Cells.ClearContents

End If
End If

End Sub


Private Sub Workbook_WindowActivate(ByVal Wn As Window)

End Sub


Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim Eingabe As Variant
Dim iRow As Integer
Dim i As Integer
If Target.Column = 8 Or Target.Column = 16 Then
For i = 5 To 145 Step 2
If i = 31 Then i = 32
If i = 58 Then i = 60
If i = 59 Then i = 60
If i = 86 Then i = 87
If i = 115 Then i = 117
If i = 116 Then i = 115
If i = Target.Row Then
Anfang:
Eingabe = InputBox("Bitte GAR-Nummer eintragen! Wähle nur eine Zahl von 1 bis 5")
If Eingabe = False Or Eingabe = "" Then Exit Sub
For iRow = 5 To 145
If Cells(iRow, Target.Column) = "GAR" & Eingabe Then
MsgBox "GAR-Nummer bereits vergeben! Bitte lösche die Garageneintragungen aus abgereisten Zimmern!", vbInformation, "Abbruch..."
GoTo Anfang
End If
Next
Target.Cells = "GAR" & Eingabe
End If
Next
End If
End Sub


Folgende Zeilen sind gelb markiert:

Sub procControlEnableDisable(intId As Integer, _
bolStatus As Boolean)

Habe ich da einem Fehler beim Einfügen gemacht oder warum will er nicht? Wie gesagt, in einer leeeren Exceldatei alles perfekt aber hier leider nicht.
Vielen Dank im Voraus!
LG Roman

Antwort 13 von naomi10123

Sorry nochmals!
Ist eigentlich nur ein Schönheitsfehler, denn es funktioniert alles. Er gab nur einmal diese Fehlermeldung aber das wars. Es haut hin!
Vielen vielen Dank
LG Roman

Antwort 14 von coros

Hallo Roamn,

lösche die Variablendeklaration "Option Explicit", die mitten in Deinem Makro und zwar vor dem Ereignis "Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)"steht heraus.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 15 von naomi10123

Vielen Dank Oliver!
Bin immer wieder von deinen Lösungen begeistert.
Diesen Fehler hätte ich eigentlich aber auch sehen müssen.
Also es klappt jetzt einfach spitzenmäßig!
Vielen vielen Dank
LG Roman

Antwort 16 von naomi10123

Noch ein Nachtrag an Teddy!
Ich hoffe, ich habe dich nicht beleidigt. Es war nicht schlecht von mir gemeint. Jeder der hier hilft und mitwirkt verdient meien höchsten Respekt!!!

In diesem Sinne an euch alle:

Wunderschöne Weihnachten und ein Frohes Fest!!!

LG Roman

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: