Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
944to948
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
944to948
944to948
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Wert aus Markierung in Zw.Ablage b. geschützer Tab

Wert aus Markierung in Zw.Ablage b. geschützer Tab
01.02.2008 08:47:00
Peter
Guten Tag
Nachfolgend genialer Code habe ich kürzlich erhalten, der es ermöglicht, die Summe (oder allenfalls der Mittelwert, die Anzahl, etc. ..) des markierten Bereiches in die Zwischenablage zu schreiben.
Klappt prima, solange die entsprechende Tabelle nicht geschützt ist. Wenn die Tabelle geschützt ist, kann die Case Auswertung nicht vorgenommen werden, die Ausführung des Codes stoppt bei "AutoVal ...." mit dem Hinweis, dass der Tabellschutz aufzuheben ist.
Gibt es allenfalls eine andere Lösung? Ich will ja keine Zelle ändern und deshalb sollte der Tabellenschutz nicht aufgehoben werden müssen.
Danke für jeden Hinweis.
Peter

Public Sub CopyStatusFunction()
'Code via Herber.de erhalten von Kl@us-M. am 29. Januar 2008
'Code von T.Ramel - im VBA Menu Extras muss Verweis auf Forms 2.0 Object Library eingestellt  _
sein
Dim Obj             As New DataObject
Dim ctl             As CommandBarControl
Dim AWF             As Object
Dim AutoVal         As Double
Dim intFormula      As Integer
Set AWF = Application.WorksheetFunction
intFormula = 0
For Each ctl In Application.CommandBars("AutoCalculate").Controls
intFormula = intFormula + 1
If ctl.State  0 Then
Exit For
End If
Next ctl
Select Case intFormula
Case 2
AutoVal = AWF.Average(Selection.SpecialCells(xlCellTypeVisible))
Case 3
AutoVal = AWF.CountA(Selection.SpecialCells(xlCellTypeVisible))
Case 4
AutoVal = AWF.Count(Selection.SpecialCells(xlCellTypeVisible))
Case 5
AutoVal = AWF.Max(Selection.SpecialCells(xlCellTypeVisible))
Case 6
AutoVal = AWF.Min(Selection.SpecialCells(xlCellTypeVisible))
Case 7
AutoVal = AWF.Sum(Selection.SpecialCells(xlCellTypeVisible))
End Select
Obj.SetText AutoVal
Obj.PutInClipboard
Set Obj = Nothing
End Sub


6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wert aus Markierung in Zw.Ablage b. geschützer
01.02.2008 11:21:00
Waven
Hallo Peter
Du kannst mit ActiveSheet.Unprotect am Anfang des Makros und ActiveSheet.Protect am Schluss erreichen, dass die Tabelle nur für das Ausführen des Makros nicht geschützt ist. Wenn die Tabelle mit einem Passwort geschützt ist lauten die Befehle ActiveSheet.Unprotect Password:="Dein Passwort" und ActiveSheet.Protect Password:="Dein Passwort".
Gruss
Waven

AW: Wert aus Markierung in Zw.Ablage b. geschützer
01.02.2008 11:25:13
Peter
Hallo Waven
Danke für die Mitteilung. Das Problem ist, dass nicht ich das Passwort zwingend gesetzt habe, sondern die Tabelle nur weiterbearbeite. Da ist mir nicht klar, weshalb ich nicht aus einer geschützten Tabelle die Summe der Werte einer Markierung dem Zwischenspeicher zuweisen kann. An der Tabelle als solches verändere ich ja nichts.
Freundlicher Gruss, Peter

Anzeige
AW: Wert aus Markierung in Zw.Ablage b. geschützer
01.02.2008 11:38:00
ANdreas
Hallo Peter,
das Problem sind die SpecialCells, die nicht in geschützten Bereichen funktionieren.
Eine einfache Lösung wäre, wenn Blattschutz vorliegt, einfach nur die Selektion (inkl. ausgeblendeter Bereiche!!!) zu nehmen. Das ist aber dann nicht mehr identisch mit dem Ergebnis in der Statusleiste.
Also wenn du ausgeblendete Bereiche hast, dann kannst das nicht nehmen:

Public Sub CopyStatusFunction()
'Code via Herber.de erhalten von Kl@us-M. am 29. Januar 2008
'Code von T.Ramel - im VBA Menu Extras muss Verweis auf Forms 2.0 Object Library eingestellt _
sein
Dim Obj             As New DataObject
Dim ctl             As CommandBarControl
Dim AWF             As Object
Dim AutoVal         As Double
Dim intFormula      As Integer
Dim c               As Range
Set AWF = Application.WorksheetFunction
intFormula = 0
For Each ctl In Application.CommandBars("AutoCalculate").Controls
intFormula = intFormula + 1
If ctl.State  0 Then
Exit For
End If
Next ctl
If ActiveSheet.ProtectContents = False Then
Set c = Selection.SpecialCells(xlCellTypeVisible)
Else
Set c = Selection
End If
Select Case intFormula
Case 2
AutoVal = AWF.Average(c)
Case 3
AutoVal = AWF.CountA(c)
Case 4
AutoVal = AWF.Count(c)
Case 5
AutoVal = AWF.Max(c)
Case 6
AutoVal = AWF.Min(c)
Case 7
AutoVal = AWF.Sum(c)
End Select
Obj.SetText AutoVal
Obj.PutInClipboard
Set Obj = Nothing
End Sub


Gruß
Andreas

Anzeige
AW: Wert aus Markierung in Zw.Ablage b. geschützer
01.02.2008 12:30:28
Peter
Hallo Andreas
Vielen Dank für deine Hilfe. Sehr wertvoll.
Ich habe mir überlegt, dass ich ja noch abfragen könnte, ob die Tabelle, in welcher die Markierung erfolgt, geschützt ist. Wenn dies zutrifft, kann ich dein Code laufen lassen und darauf noch in einer MsgBox hinweisen (ab Select Case), wenn nicht, könnte ich den ursprünglichen nehmen.
Meine Frage ist: Wie lautet die Abfrage, ob die Tabelle, in welcher die Markierung erfolgt ist, geschützt ist?
Nochmals vielen Dank für die Hilfe.
Peter

AW: Wert aus Markierung in Zw.Ablage b. geschützer
01.02.2008 14:20:48
ANdreas
Hallo Peter,
steht doch im Code drin:
If ActiveSheet.ProtectContents = False Then
---
Else
' Msgbox "Geschützt"
End if
Gruß
Andreas

Anzeige
AW: Wert aus Markierung in Zw.Ablage b. geschützer
01.02.2008 14:43:01
Peter
Hallo Andreas
Sorry, dass ich nicht gesehen habe, dass du für mich schon weiter gedacht hast und nochmals besten Dank!
Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige