Supportnet / Forum / Tabellenkalkulation
Zellen verbinden und zentrieren über Makro
Frage
Hallo Leute, erstmal nochmal ein Danke an nighty der mir bei meiner letzten [url=https://supportnet.de/discussion/listmessages.asp?AutoID=198491&query=Ausschneiden+und+Einfügen+von+Spalten]
Frage[/url] super geholfen hat.
Jetzt sind weitere Probleme aufgetaucht,
1. habe ein manuell verbundenes und zentriertes Feld h77, h78, i77 und i78 (zusammengefasst als eine Zelle h77).
In diesem Feld befindet sich Text mit Zeilenumbruch das durch ein Makro gelöscht werden soll und in den Urzustand zurück versetzt werden soll ... also verbinden der 4 Zellen mit zentrierung und Zeilenumbruch ohne Text der wird dann Manuell eingegeben!
Leider bekomme ich die Formel nicht zusammen :-(
[h77:i78].Clear
Range("h77:i78").BorderAround _
ColorIndex:=0, Weight:=xlThin
2. Ich suche nach einer Formel die ein Makro aktiviert immer wenn eine der Tasten gedrückt wird: hoch, runter, links, rechts, enter und mouseklick .
Gibt es da evtl eine Formel die das kombinieren kann?
3. Verbergen von Formeln,
Habe 2 Spalten mit div Formeln die gegen Einsichtnahme und veränderungen geschützt werden sollen. I3:I75 und J3:J75
Als Beispiel, in Zelle J3 steht Formel
=(($E$3+$D$3)-($F$3+$G$3))*$H$3
wenn ich J3 anklicke soll die Formel auch oben in der Leiste nicht sichtbar sein und zusätzlich gegen Eingabe von Daten geschützt sein.
J3 soll nur das Ergebnis anzeigen.
Sorry das ich Euch so überhäufe aber solangsam bin ich echt ratlos und würde mich riesig freuen wenn Ihr mir weiter helfen könntet.
Gruß McFly_HL
Antwort 1 von nighty
hi McFly_HL :)
verbundene zellen sind der erzfeind eines jeden programmierers :))
mit den formeln meldet sich bestimmt noch jemand :) ,bin so nicht der formelfreak :))
gruss nighty
verbundene zellen sind der erzfeind eines jeden programmierers :))
mit den formeln meldet sich bestimmt noch jemand :) ,bin so nicht der formelfreak :))
gruss nighty
Antwort 2 von McFly_HL
Hallo Leute, habe das Problem inzwischen selbst gelöst und möchte Euch teilhaben lassen.
Zu Frage 1
Dieses Makro löscht den Inhalt der Zellen h77:i78 und fügt 4 neue verbundene
Zellen mit Zeilenumbruch und Formatierung aller 4 Seiten in h77:i78 ein.
'Start
[h77:i78].Clear
Range("h77:i78").Select
Selection.NumberFormat = "@"
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlTop
.WrapText = True
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.MergeCells = True
End With
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
'End
Zu Frage 2
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
‘
‘
End Sub
Zu Frage 3
Fügt Formeln und Text in Tabelle ein.
Bei der Formel wird dann nur noch das Ergebniss oder 0 gezeigt.
Die 0 brauch man dann nur noch Ausblenden.
Tabelle1.Range("$A$1").Formula = [=$B$1+$C$1]
Tabelle1.Range("$A$2").FormulaR1C1 = "Textfeld"
Im Anschluß brauch nur noch das VBA-Objekt für die Anzeige gesperrt werden.
Fertig keine Formeln mehr einsehbar und löschen kann man sie auch nicht mehr
da die Formel bei jedem Durchlauf neu geschrieben wird.
So Leute würde mich freuen wenn mir jemand ein Feedback schrreiben würde
falls es eine evtl kürzere oder bessere Lösung gibt.
Beste Grüße McFly_HL
Zu Frage 1
Dieses Makro löscht den Inhalt der Zellen h77:i78 und fügt 4 neue verbundene
Zellen mit Zeilenumbruch und Formatierung aller 4 Seiten in h77:i78 ein.
'Start
[h77:i78].Clear
Range("h77:i78").Select
Selection.NumberFormat = "@"
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlTop
.WrapText = True
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.MergeCells = True
End With
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
'End
Zu Frage 2
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
‘
‘
End Sub
Zu Frage 3
Fügt Formeln und Text in Tabelle ein.
Bei der Formel wird dann nur noch das Ergebniss oder 0 gezeigt.
Die 0 brauch man dann nur noch Ausblenden.
Tabelle1.Range("$A$1").Formula = [=$B$1+$C$1]
Tabelle1.Range("$A$2").FormulaR1C1 = "Textfeld"
Im Anschluß brauch nur noch das VBA-Objekt für die Anzeige gesperrt werden.
Fertig keine Formeln mehr einsehbar und löschen kann man sie auch nicht mehr
da die Formel bei jedem Durchlauf neu geschrieben wird.
So Leute würde mich freuen wenn mir jemand ein Feedback schrreiben würde
falls es eine evtl kürzere oder bessere Lösung gibt.
Beste Grüße McFly_HL
Antwort 3 von coros
Hi,
ich weiß zwar nicht, warum Du unbedingt möchtest, dass niemand sieht was für eine Formel in der Zelle steht, aber Du wirst schon Deine Gründe dafür haben. Nachfolgender Code sperrt eine Zelle wenn diese eine Formel enthält. Ausserdem wird auch noch die DisplayFormulaBar ausgeblendet, damit niemand die Formel einsehen kann. Wird die Zelle wieder verlassen, wird die DisplayFormulaBar wieder eingeblendet. In allen anderen Zellen können wie gewohnt Texte eingegeben werden und sie können normal formatiert werden usw. Kopiere den Code in die Tabelle, in der die Zellen mit den Formeln geschützt werden sollen.
Du musst in den Zeilen
ActiveSheet.Protect "Passwort"
und
ActiveSheet.Unprotect "Passwort"
das Wort Passwort gegen ein Passwort Deiner Wahl ändern.
Was ich auch nicht verstehe, warum Du jedesmal die Zellen neu formtieren möchtest. Reicht denn nicht aus, wenn Du mit dem Code
Range("H77:I78").ClearContents
nur den Inhalt der verbundenen Zellen löscht? Versuch das mal, vielleicht hilft Dir das ja weiter.
Ich hoffe, in meinen Lösungsvorschlägen war was brauchbares für Dich dabei. Bei Fragen melde Dich noch mal.
MfG,
coros
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.
ich weiß zwar nicht, warum Du unbedingt möchtest, dass niemand sieht was für eine Formel in der Zelle steht, aber Du wirst schon Deine Gründe dafür haben. Nachfolgender Code sperrt eine Zelle wenn diese eine Formel enthält. Ausserdem wird auch noch die DisplayFormulaBar ausgeblendet, damit niemand die Formel einsehen kann. Wird die Zelle wieder verlassen, wird die DisplayFormulaBar wieder eingeblendet. In allen anderen Zellen können wie gewohnt Texte eingegeben werden und sie können normal formatiert werden usw. Kopiere den Code in die Tabelle, in der die Zellen mit den Formeln geschützt werden sollen.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Blattschutz As Range
For Each Blattschutz In Target.Cells
If Blattschutz.HasFormula Then
With Application
.DisplayFormulaBar = False
End With
ActiveSheet.Protect "Passwort"
Exit Sub
Else
With Application
.DisplayFormulaBar = True
End With
ActiveSheet.Unprotect "Passwort"
End If
Next Blattschutz
End Sub
Du musst in den Zeilen
ActiveSheet.Protect "Passwort"
und
ActiveSheet.Unprotect "Passwort"
das Wort Passwort gegen ein Passwort Deiner Wahl ändern.
Was ich auch nicht verstehe, warum Du jedesmal die Zellen neu formtieren möchtest. Reicht denn nicht aus, wenn Du mit dem Code
Range("H77:I78").ClearContents
nur den Inhalt der verbundenen Zellen löscht? Versuch das mal, vielleicht hilft Dir das ja weiter.
Ich hoffe, in meinen Lösungsvorschlägen war was brauchbares für Dich dabei. Bei Fragen melde Dich noch mal.
MfG,
coros
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 4 von McFly_HL
Danke für das Feedback coros,
werde beides mal ausprobieren und bin gespannt ob es klappt, wäre in der Tat eine Verbesserung, da es das Makro um einen bedeutenen Teil verkürzen würde.
Melde mich wieder wenn ich es ausprobiert habe.
Besten Gruß McFly_HL
werde beides mal ausprobieren und bin gespannt ob es klappt, wäre in der Tat eine Verbesserung, da es das Makro um einen bedeutenen Teil verkürzen würde.
Melde mich wieder wenn ich es ausprobiert habe.
Besten Gruß McFly_HL
Antwort 5 von McFly_HL
Hallo Leute, moin coros,
wie versprochen melde ich mich wieder,
habe beides ausprobiert und muß sagen das ich den Code
Der andere Quelltext für den Blattschutz habe ich nicht zum laufen gebracht, weil ich keine offenen Formeln mehr habe!
Habe Sie alle über
Möglicher weise kann man den Quellcode ja noch ein bischen verändern so das man lediglich die Zellen
Habe auf der Arbeitsoberfläche Fenster1 probiert den Blattschutz von der Oberfläche aus zu aktivieren aber leider verträgt sich dieser mit meiner Tabelle nicht ünd verschiebt die zu sperrenden Spalten beim starten meines Makros so das das Makro das unter anderem auch Spalten kopieren soll dies nicht mehr kann und somit einen Fehler produziert und abbricht!
Ist schon sehr merkwürdig.
wie versprochen melde ich mich wieder,
habe beides ausprobiert und muß sagen das ich den Code
Range("H77:I78").ClearContents
noch nicht kannte, mir aber sehr weiter geholfen hat!Der andere Quelltext für den Blattschutz habe ich nicht zum laufen gebracht, weil ich keine offenen Formeln mehr habe!
Habe Sie alle über
Tabelle1.Range("$A$1").Formula = [=$B$1+$C$1]
Tabelle1.Range("$A$2").FormulaR1C1 = "Textfeld"
in die Tabelle eingefügt und sind anscheinend somit nicht mehr als ein Eingefügter Code in einer Zelle zu erkennen, jedenfalls zeigt der Quelltext keine Wirkung obwohl alles richtig eingestellt ist auch die Hacken in der Formatierung sitzen richtig!Möglicher weise kann man den Quellcode ja noch ein bischen verändern so das man lediglich die Zellen
C2 und H3:H75 vor zugriff sperrt???!!!Habe auf der Arbeitsoberfläche Fenster1 probiert den Blattschutz von der Oberfläche aus zu aktivieren aber leider verträgt sich dieser mit meiner Tabelle nicht ünd verschiebt die zu sperrenden Spalten beim starten meines Makros so das das Makro das unter anderem auch Spalten kopieren soll dies nicht mehr kann und somit einen Fehler produziert und abbricht!
Ist schon sehr merkwürdig.
Antwort 6 von coros
Hi,
ist doch logisch, dass mein Code nicht funktionieren kann, bzw. keine Auswirkung mehr hat, wenn in den Zellen durch Deinen Code keine Formeln mehr stehen. Meine Lösung bezog sich darauf, dass in den Zellen nach wie vor die Formeln stehen. So wie Du das jetzt gelöst hast, ist sicher für Dich gut. Ich würde es so wahrscheinlich nicht lösen. Denn wenn Du mal eine Änderung an den Formeln machen willst, stehst Du da, weil diese nicht mehr sichtbar. Aber egal, hauptsache es ist so, wie Du es Dir vorstellst.
Deine Erklärung in dem letzten Absatz Deines letzten Postings verstehe ich nicht. Ist da jetzt irgendwo eine Frage versteckt oder wolltest Du das geschriebene nur Kund tun? Wenn das eine Frage sein sollte, dann schreib die noch mal anders, ich habe sie nicht verstanden.
Ansonsten freut es mich, das ich zur Lösung was beitragen konnte. Danke auch für das Feedback.
MfG,
coros
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.
ist doch logisch, dass mein Code nicht funktionieren kann, bzw. keine Auswirkung mehr hat, wenn in den Zellen durch Deinen Code keine Formeln mehr stehen. Meine Lösung bezog sich darauf, dass in den Zellen nach wie vor die Formeln stehen. So wie Du das jetzt gelöst hast, ist sicher für Dich gut. Ich würde es so wahrscheinlich nicht lösen. Denn wenn Du mal eine Änderung an den Formeln machen willst, stehst Du da, weil diese nicht mehr sichtbar. Aber egal, hauptsache es ist so, wie Du es Dir vorstellst.
Deine Erklärung in dem letzten Absatz Deines letzten Postings verstehe ich nicht. Ist da jetzt irgendwo eine Frage versteckt oder wolltest Du das geschriebene nur Kund tun? Wenn das eine Frage sein sollte, dann schreib die noch mal anders, ich habe sie nicht verstanden.
Ansonsten freut es mich, das ich zur Lösung was beitragen konnte. Danke auch für das Feedback.
MfG,
coros
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 McFly_HL
Hi coros,
Ja sollte eine Frage sein.
habe 3 Dinge gemacht,
1.)ein Makro erstellt,
2.)Das Makro über "Extras"-"Makro"-"Visual Basic-Editor" im Editor unter "Extras"-"Eigenschaften VBAProject" das VBAProject geschützt.
3.)Und das Blatt unter "Extras"-"Schutz"-"Blatt schützen" ebenfalls geschützt.
(Zeitpunkt noch vor erstellung des Makros)
Ich habe festgestellt das, wenn ich Änderungen vornehme ohne das ich den Schutz der VBAProjects komplett aufgehoben habe verschiebungen in den Spalten stattfinden. Das ließ sich nur vermeiden wenn ich den Schutz aufhob die Änderung vollzog und nach der Speicherung den Schutz wieder hergestellt habe.Dann blieben die Spalten erhalten!
(Makro jetzt erstellt)
Jetzt habe ich das Problem das sich die Spalten wieder zu verschieben scheinen diesmal verschiebt bzw verändert sich aber der Blattschutz wenn ich beides aktiviert habe.Nach der Aktivierung des Makros über Tastenkombination sind plötzlich andere Spalten als vorher freigegeben und gesperrt als vorher eingestellt!
Irgendeine Idee wie das sein kann?
MfG McFly_HL
Ja sollte eine Frage sein.
habe 3 Dinge gemacht,
1.)ein Makro erstellt,
2.)Das Makro über "Extras"-"Makro"-"Visual Basic-Editor" im Editor unter "Extras"-"Eigenschaften VBAProject" das VBAProject geschützt.
3.)Und das Blatt unter "Extras"-"Schutz"-"Blatt schützen" ebenfalls geschützt.
(Zeitpunkt noch vor erstellung des Makros)
Ich habe festgestellt das, wenn ich Änderungen vornehme ohne das ich den Schutz der VBAProjects komplett aufgehoben habe verschiebungen in den Spalten stattfinden. Das ließ sich nur vermeiden wenn ich den Schutz aufhob die Änderung vollzog und nach der Speicherung den Schutz wieder hergestellt habe.Dann blieben die Spalten erhalten!
(Makro jetzt erstellt)
Jetzt habe ich das Problem das sich die Spalten wieder zu verschieben scheinen diesmal verschiebt bzw verändert sich aber der Blattschutz wenn ich beides aktiviert habe.Nach der Aktivierung des Makros über Tastenkombination sind plötzlich andere Spalten als vorher freigegeben und gesperrt als vorher eingestellt!
Irgendeine Idee wie das sein kann?
MfG McFly_HL
Antwort 8 von coros
Hi,
also der Blattschutz hat nichts mit dem VBA Schutz zu tun. Auch glaube ich nicht, das was Du da beschreibst (auch wenn ich es immer noch nicht verstehe, was Du eigentlich meinst) irgendwas mit dem Blatt- bzw. VBA Schutz zu tun hat. Ich vermute mal eher, das da irgendwas in Deinem Makro Code nicht ganz koscher ist. Poste doch mal den Code um den es geht.
MfG,
coros
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.
also der Blattschutz hat nichts mit dem VBA Schutz zu tun. Auch glaube ich nicht, das was Du da beschreibst (auch wenn ich es immer noch nicht verstehe, was Du eigentlich meinst) irgendwas mit dem Blatt- bzw. VBA Schutz zu tun hat. Ich vermute mal eher, das da irgendwas in Deinem Makro Code nicht ganz koscher ist. Poste doch mal den Code um den es geht.
MfG,
coros
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.

