Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1100to1104
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

zellen einfügen per makro nicht gesperrt

zellen einfügen per makro nicht gesperrt
Markus
Hallo Excel-Helfer,
ich bräuchte ein Makro, das kopierte und gesperrte Zellen beim Einfügen in meine Tabelle ungesperrt einfügt.
Beispiel:
ich öffne in excel eine neue Mappe. Alle Zellen sind standardmäßig gesperrt. Wenn ich nun beliebige Zellen kopiere und in meine Excel-Datei einfüge, sind sie dort ebenfalls gesperrt. Dies soll per Makro unterbunden werden. wichtig ist: das soll nur für Zellen gelten, die eingefügt werden.
geht sowas?
Danke schonmal.
AW: zellen einfügen per makro nicht gesperrt
13.09.2009 13:36:33
Tino
Hallo,
nach dem kopieren diese Codezeile, Tabellenname anpassen.
Sheets("Tabelle2").Cells.Locked = False
Gruß Tino
AW: zellen einfügen per makro nicht gesperrt
13.09.2009 20:33:08
Markus
hallo Tino, danke schonmal für deine Antwort.
ich dachte aber eher on the fly. also sollte das makro schon aktiv sein und dann nur die, die eingefügt werden sollen "entsperren".
Danke
AW: zellen einfügen per makro nicht gesperrt
13.09.2009 21:02:31
Tino
Hallo,
Dann sprich nicht alle Zellen an sonden nur den Bereich wo du die Daten einfügst.
Wie groß der ist weis ich nicht, kenne deinen Code nicht.
Gruß Tino
AW: zellen einfügen per makro nicht gesperrt
13.09.2009 21:19:38
Markus
versteh ich jetzt nicht.
vielleicht geht es auch anders. beim Einfügen soll nur der Zellinhalt kopiert werden und keine Formatierung mitkopiert werden.
das ganze soll für den Vorgang Einfügen gelten. Die bestehenden Formate sollen alle beibehalten werden.
Anzeige
um nur Werte einzufügen,
13.09.2009 21:36:15
Tino
Hallo,
dafür gibt es verschiedene Möglichkeiten.
Hier mal zwei davon.
Sub Versione1()
Sheets("Tabelle1").Range("A1:B6").Copy
Sheets("Tabelle2").Range("A1").PasteSpecial xlPasteValues
End Sub
Sub Verein2()
Dim Bereich As Range
Set Bereich = Sheets("Tabelle1").Range("A1:B6")
With Sheets("Tabelle2").Range("A1")
.Resize(Bereich.Rows.Count, Bereich.Columns.Count).Value = Bereich.Value
End With
End Sub
Dies hebt aber nicht den Zellschutz auf.
Gruß Tino
Wächter Makro für bestehendes Zellformat)
13.09.2009 21:48:49
Markus
Dank Dir für Deine Mühe Tino, aber ich glaub ich hab nicht genau beschrieben was ich meine.
der zellschutz soll nicht aufgehoben werden. In meiner zieldatei ist er aufgehoben und dass er durch Einfügen gesetzt wird soll verhindert werden.
Global soll gelten dass nur inhalte (Zahlen) ohne Format (Farbe, Rahmen etc...) oder zellschutz eingefügt werden.
ich sollte praktisch ein aktives Wächter-Makro haben dass den einfügevorgang überwacht.
Ich hoffe so ist es verständlich.
Anzeige
AW: Wächter Makro für bestehendes Zellformat)
13.09.2009 21:57:18
Tino
Hallo,
die zwei Versionen fügen doch nur die Werte ein, sonst nichts.
Gruß Tino
AW: Wächter Makro für bestehendes Zellformat)
13.09.2009 22:03:05
Markus
ah ok,
könntest Du mir dann noch sagen, wie das für die ganze arbeitsmappe aussehen müßte. also keine bestimmten bereiche
AW: Wächter Makro für bestehendes Zellformat)
13.09.2009 22:20:05
Markus
ah ok,
könntest Du mir dann noch sagen, wie das für die ganze arbeitsmappe aussehen müßte. also keine bestimmten bereiche.
Alles was über einfügen läuft sollen nur inhalte sein.
AW: Wächter Makro für bestehendes Zellformat)
13.09.2009 22:36:27
Tino
Hallo,
so zum Beispiel.
Sub Verein2()
Dim Bereich As Range
'Dein Bereich Quelle (Tabllennamen anpassen)
Set Bereich = Sheets("Tabelle1").UsedRange
Application.ScreenUpdating = False
'Dein Bereich Ziel (Tabllennamen anpassen)
With Sheets("Tabelle2").Range(Bereich(1, 1).Address)
.Resize(Bereich.Rows.Count, Bereich.Columns.Count).Value = Bereich.Value
End With
Application.ScreenUpdating = True
End Sub
Bei sehr großen Tabellen, kann es Probleme mit dem Speicher geben.
Gruß Tino
Anzeige
AW: Wächter Makro für bestehendes Zellformat)
13.09.2009 22:50:15
Markus
es geht nicht.
einen bestimmten Quellbereich hab ich nicht. ich glaube wir schreiben aneinander vorbei. oder das was ich möchte, läßt sich überhaupt nicht umsetzen.
ich weis nicht wo Deine Daten sind.
13.09.2009 23:11:07
Tino
Hallo,
Du wirst doch wissen wo die Daten herkommen sollen? Dies kann ich dir nicht abnehmen.
Gruß Tino
AW: ich weis nicht wo Deine Daten sind.
13.09.2009 23:23:47
Markus
die daten können aus beliebigen Excel dateien kommen. um die Quelle gehts mir nicht.
Alle Zellen meiner Arbeitsmappe sollen beim Einfügen (paste) nur Inhalte akzeptieren. Es sollen keine Rahmen, Farben, Zellschutz usw. beim einfügen angenommen werden.
ich öffne eine neue excel-mappe und kopiere dort eine Zelle. Jetzt wähle ich meine Tabelle aus und füge die zelle ein. In meiner Tabelle sind Zellen mit grauer Zellschattierung und teilweise nicht gesperrt. Gehe ich jetzt auf Einfügen so wird die zelle weiß, Rahmen fehlen und sie ist gesperrt (ist ja standard beim öffnen einer neuen Mappe).
Das ergebnis soll aber nach dem einfügen sein: Graue zellschattierung, rahmen sollen noch da sein und die zelle soll nicht gesperrt sein. Das gewünschte makro sollte das gewährleisten.
Danke für deine Geduld
Anzeige
mach rechte Maustaste
13.09.2009 23:43:29
Tino
Hallo,
und wähle Inhalt einfügen, dort wälst du Werte aus.
Gruß Tino
AW: mach rechte Maustaste
13.09.2009 23:48:14
Markus
ja das weiß ich, aber das meinte ich nicht.
falls doch einfügen anstatt inhalt einfügen gedrückt wird soll ein makro dafür sorgen, dass keine Formatierungen jeglicher art in meine excel tabelle kommen, sondern nur Inhalte.
ich denke wir kommen so nicht weiter... ich versuchs morgen nochmal.
Dank' dir trotzdem für deine Hilfe
Grüße
neue idee - neuer Versuch
14.09.2009 00:35:49
Markus
Hallo,
vielleicht gehts mit procControl 22, (Einfügen) und procControl 755 (Inhalte einfügen)
kann man das irgendwie programmieren, dass wenn procControl 22 gewählt wird, procControl 755 ausgeführt wird oder so?
Wichtig wäre mir dass das auch ms excel 2007 tauglich ist.
Danke!
Anzeige
AW: neue idee - neuer Versuch
14.09.2009 06:50:37
Tino
Hallo,
ich kann Dir nicht helfen,
Du musst Die Frage aber offen lassen. (Häkchen bei 'Frage noch offen' setzen)
Gruß Tino
AW: neue idee - neuer Versuch
14.09.2009 12:56:35
fcs
Hallo markus,
hier mal mein Machwerk.
Es fing mal ganz klein an.
1. Zell-Selektion überwachen
2. Wenn Copy-Modus-Aktiv dann über MsgBox-Werte einfügen.
3. Eingefügter Zellbereich : Locked = False
und dann kam all das drumherum um zu verhindern, dass das normale Einfügen abgefangen wird.
Die Prozeduren verfolgen jetzt permanent den SelektionsStatus und wenn "versehentlich" alles eingefügt wird, dann wird eine Undo-Aktion durchgeführt. Die Prozeduren muss du alle unter "DieseArbeitsmappe" der Datei einfügen, in der eingefügt wird. Falls du öfters leere Dateien mit dieser Funktionalität benötigst, dann solltest du eine leere Datei mit diesen Makros als Mustervorlage speichern.
Auswahlmenüs und einzelne Schaltflächen in Symbolleisten deaktivieren ist doch sehr mühselig und es muss ja beim Wechsel zwischen Dateien und beim Beenden der Datei wieder alles in den Ausgangszustand versetzt werden.
Gruß
Franz
Option Explicit
Private rngAuswahl As Range
Private Sub Workbook_Activate()
'Nach einem Wechsel von einer anderen Mappe
Set rngAuswahl = Nothing
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
On Error GoTo Fehler
Application.EnableEvents = False
Select Case Sh.Name
Case "TabelleXOX", "TabXYZ"
'In diesen Tabellen "normal" ändern
Case Else
If rngAuswahl Is Nothing Then
'Kopieren/Einfügen ohen Änderung der Zellselektion
Application.Undo 'Änderung rückgängig machen
MsgBox "Nur Einfügen von Werten ist erlaubt"
End If
End Select
Application.EnableEvents = True
Err.Clear
Fehler:
With Err
If .Number  0 Then
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
Application.CutCopyMode = False
Application.EnableEvents = True
End If
End With
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
'Nach dem Verlassen eines Blattes
Set rngAuswahl = Nothing
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
On Error GoTo Fehler
Select Case Sh.Name
Case "TabelleXOX", "TabXYZ"
'In diesen Tabellen "normal" kopieren
Case Else
CopyControl:
If rngAuswahl Is Nothing Then
'Selektion merken
Set rngAuswahl = Selection
GoTo CopyControl
Else
'Kopiervorgang kontrollieren es sollen nur Werte eingefügt werden
If Target.Row >= 1 Then 'Aktiven beeich des Makros definieren
'Überprüfung des Kopiermodus
Application.EnableEvents = False
If Application.CutCopyMode = xlCopy Then
If MsgBox("Kopierte daten als Werte einfügen?", vbQuestion + vbOKCancel, _
"Kopierte Daten als Werte einfüge") = vbOK Then
'Nur Werte einfügen
ActiveCell.PasteSpecial Paste:=xlPasteValues
'Einfügebereich entsperren
Selection.Locked = False
End If
ElseIf Application.CutCopyMode = xlCut Then
'hier ggf. verfeinern für bestimmte Zelleinfügeaktionen
ActiveCell.Insert
MsgBox "Im Ausschneide/Cut-Modus funktioniert dieses Makro nicht"
Application.CutCopyMode = False
Else
'do nothing
End If
Application.EnableEvents = True
End If
End If
End Select
Err.Clear
Fehler:
With Err
If .Number  0 Then
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
Application.CutCopyMode = False
Application.EnableEvents = True
End If
End With
End Sub
Gruß
Franz
Anzeige
AW: neue idee - neuer Versuch
14.09.2009 13:15:12
Markus
Hallo Franz,
wow. Danke schonmal. Das kommt dem was ich suche schon ganz nah, aber wenn ich nun aus einer anderen tabelle eine Zelle kopiert habe und klicke dann auf meine Zieldatei, erscheint sofort das popup.
Ein popup benötige ich nicht und beim anklicken der zielzelle soll auch nicht sofort "einfügen" aktiviert werden.
AW: neue idee - neuer Versuch
14.09.2009 13:20:49
Markus
ist es denn kompliziert den Einfügen Befehl durch Inhalt einfügen zu ersetzen, das kann dann für diese Tabelle generell gelten. Beim beenden eben wieder zurücksetzen.
nochmal eine andere Idee
14.09.2009 13:41:49
Markus
vielleicht gehts doch einfacher...
hab etwas mit dem makrorekorder rumgespielt :-)
ich müßte alle alle Aktionen ActiveSheet.Paste durch Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
ersetzen.
und natürlich nach dem beenden wieder in den originalzustand versetzen. Das wärs doch dann oder?
Anzeige
AW: nochmal eine andere Idee
14.09.2009 14:51:45
fcs
Hallo Markus,
das ist jetzt aber doch ein wenig einfach gedacht. In sämtlichen Menüs und Symbol-Leisten die Einfügenfunktion zu deaktivieren + Tastenkombi Strg+v
und nur noch Einfügen-Werte funktionsfähig zu halten ist halt schon ein extremer Eingriff in die Excel-Funktionalität.
Bastel dir doch für die Dateien eine eigene Symbolleiste auf der nur der Einfügen-Werte-Button ist oder ein Button mit entsprechendem Makro, das deine Wünsche erfüllt. Dann ist zumindest die Gefahr der unbeabsichtlich Bedienung reduziert. Dann hast du aber immer noch das Problem, dass für die eingefügten Zellen die Locked-Eigenschaft auf False gesetzt werden soll.
Gruß
Franz
Einfügemakro:
Sub WerteEinfuegenNumberFormatUnlock()
If Application.CutCopyMode = xlCopy Then
'Nur Werte einfügen
ActiveCell.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
'Einfügebereich entsperren
Selection.Locked = False
End If
End Sub

Anzeige
AW: nochmal eine andere Idee
14.09.2009 15:34:03
Markus
genau das (eigene Symbolleiste) hatte ich mir bereits überlegt. Habe von Hajo das Mustermakro alle symbolleisten_aus http://hajo-excel.de/uebersicht.htm . ich bräuchte aber aus der Standardleiste Speichern, Drucken, Rückgangig, Wiederholen. Dann hab ich aber immernoch das rechtsklick und strg+v Problem.
AW: nochmal eine andere Idee
14.09.2009 15:55:52
Markus
bei dem symbolleisten_aus Makro von Hajo geht der rechtsklick auch nicht mehr :-)
dann wäre da nur noch wie blende ich die Standardleiste mit Speichern, Drucken, Rückgangig, Wiederholen wieder ein und deaktiviere dazu noch strg+v
Anzeige
AW: nochmal eine andere Idee
14.09.2009 17:24:13
Jochen
Hi,
strg + v mittels Application.OnKey stilllegen.
Rückgängig und Wiederholen stehen nach Makroausführung ohnehin nicht zur Verfügung.
mfg Jochen
AW: nochmal eine andere Idee
14.09.2009 19:28:35
Markus
Hallo Jochen,
wo und wie muss ich das einfügen? DieseArbeitsmappe? Modul?
wie sollte der code aussehen, es muss ja auch wieder zurückgesetzt werden?
Bin absoluter vba-neuling.
Danke
AW: nochmal eine andere Idee
14.09.2009 19:31:49
Markus
so sind glaube ich die befehle, aber was muss ich noch beachten, dass beim beenden der ursprungszustand wiederhergestellt ist?
Sub TastenkombinationenAus()
Application.OnKey "^x", ""
Application.OnKey "^c", ""
Application.OnKey "^v", ""
End Sub
Sub TastenkombiantionenEin()
Application.OnKey "^x"
Application.OnKey "^c"
Application.OnKey "^v"
End 

Sub

AW: nochmal eine andere Idee
14.09.2009 21:27:56
Jochen
Hi,
stell den Cursor in das Wort OnKey und drücke F1
mfg Jochen

315 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige