Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Eigene Funktion in bedingter Formatierung verhindert Makro

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Eigene Funktion in bedingter Formatierung verhindert Makro (278 mal gelesen)
Diesaster
Mitglied
Student


Sehen Sie sich das Profil von Diesaster an!   Senden Sie eine Private Message an Diesaster  Schreiben Sie einen Gästebucheintrag für Diesaster

Beiträge: 61
Registriert: 05.11.2015

Microsoft Excel 2016

erstellt am: 10. Mai. 2021 13:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,

ich stehe vor einem kleinen Rätsel und hoffe, dass ihr mir hier weiterhelfen könnt.

Zum Sachverhalt:
Ich habe mir eine Funktion erstellt, welche mir eine Zelle mit Hilfe der bedingten Formatierung markiert, wenn dort ein Kommentar mit einem bestimmten Text enthalten ist.

Code:

Function CommName(rngZelle As Range, rngMAZelle As Range) As Boolean
CommName = (Not rngZelle.Comment Is Nothing) And (InStr(rngZelle.Comment.Text, rngMAZelle.Value) > 0)
End Function

Die bedingte Formatierung hierzu ist:
=(NICHT(ISTLEER($N$6)))*(CommName(INDIREKT(ADRESSE(ZEILE();SPALTE()));$N$6))

Den Kommentar in den Zellen erzeuge ich mit einem Makro. Sobald die bedingte Formatierung (s. oben) erstellt ist, wird zwar das Kommentarfenster erstellt, aber der Text nicht hineingeschrieben.
Dabei ist es egal, ob ich einen der folgenden beiden Varianten nehme:

Code:

TabelleX.Cells(Reihe,Spalte).AddComment Text:="Testtext"

oder

Code:

TabelleX.Cells(Reihe,Spalte).AddComment
TabelleX.Cells(Reihe,Spalte).Comment.Text Text:="Testtext"

Das Makro arbeitet immer bis zu dem AddComment, fügt jedoch den Text nicht ein. Eine Fehlermeldung wird auch nicht generiert.

Hat hier jemand eine Idee/Lösung, wie ich das Problem umgehen kann? Bräuchte die bedingte Formatierung dringend..

Herzlichen Dank!

Mit freundlichen Grüßen
Diesaster

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Nepumuk
Mitglied
Entwicklungsleiter


Sehen Sie sich das Profil von Nepumuk an!   Senden Sie eine Private Message an Nepumuk  Schreiben Sie einen Gästebucheintrag für Nepumuk

Beiträge: 347
Registriert: 16.10.2004

erstellt am: 10. Mai. 2021 17:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Diesaster 10 Unities + Antwort hilfreich

Hallo,

teste mal ob das abschalten der automatischen Berechnung etwas bringt.

Code:
    Application.Calculation = xlCalculationManual
    TabelleX.Cells(Reihe, Spalte).AddComment Text:="Testtext"
    Application.Calculation = xlCalculationAutomatic

------------------
Gruß
Nepumuk 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Diesaster
Mitglied
Student


Sehen Sie sich das Profil von Diesaster an!   Senden Sie eine Private Message an Diesaster  Schreiben Sie einen Gästebucheintrag für Diesaster

Beiträge: 61
Registriert: 05.11.2015

Microsoft Excel 2016

erstellt am: 11. Mai. 2021 06:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Nepumuk,

danke für deine Antwort.
Das hat leider nichts geholfen.
Habe es so eingepflegt, wie du das geschrieben hattest. Jetzt tritt das gleiche Phänomen wieder ein, wie oben beschrieben.

Er erzeugt den Kommentar zwar, jedoch schreibt den Text nicht hinein. Die Kalkulation wird auch nicht auf Automatik zurück gesetzt, das heißt, dass das Makro hier "abbricht" ohne Meldung.

Interessanter Fakt bei diesem Fehler, den ich gesehen habe:
Ich hab in meinem Makro eine zusätzliche Prüfung eingebaut. Wenn schon ein Kommentar vorhanden ist, hat es auch einen Text (so sollte es sein). Ist ein Kommentar vorhanden, kann ich den Text einfach editieren. Das klappt auch mit der bedingten Formatierung dann kurioserweise.

Werde wohl den meiner Meinung nach unsauberen Weg gehen müssen und den leeren Kommentar mit

Code:
On Error Resume Next

abfangen müssen.

Hast du vielleicht noch eine Idee?

EDIT:
Habe den Fehler gefunden, jedoch noch keine Lösung dafür parat.
Folgende Funktion verursacht sehr wahrscheinlich den Fehler:

Code:

Function CommName2(rngZelle As Range, rngMAZelle As Range) As Boolean
CommName2 = InStr(rngZelle.Comment.Text, rngMAZelle.Value) > 0
End Function

Sobald ich diese in irgendeiner Form in der bedingten Formatierung habe, macht das Makro nicht weiter.
Das betrifft in diesem Fall nicht nur das Hinzufügen eines Kommentares, sondern auch z.B. das Hinzufügen einer bedingten Formatierung via VBA.

Gruß Diesaster

[Diese Nachricht wurde von Diesaster am 11. Mai. 2021 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Diesaster
Mitglied
Student


Sehen Sie sich das Profil von Diesaster an!   Senden Sie eine Private Message an Diesaster  Schreiben Sie einen Gästebucheintrag für Diesaster

Beiträge: 61
Registriert: 05.11.2015

Microsoft Excel 2016

erstellt am: 11. Mai. 2021 08:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,

habe jetzt eine Lösung gefunden.

Damit auch andere die Lösung nutzen können, hier die Funktion und die bedingte Formatierung dazu.

Funktion:

Code:

Function Kommentar(Optional rZelle As Range)
  Kommentar = ""
  If rZelle Is Nothing Then _
    Set rZelle = Application.Caller
  If Not rZelle.Comment Is Nothing Then _
    Kommentar = rZelle.Comment.Text
End Function

Bedingte Formatierung:

Code:

=(Kommentar(INDIREKT(ADRESSE(ZEILE();SPALTE())))<>"")*(ISTZAHL(FINDEN($N$6;Kommentar(INDIREKT(ADRESSE(ZEILE();SPALTE()))))))

Zur Ergänzung:
Wenn die Zelle im Bereich der bedingten Formatierung einen Kommentar mit einem Text enthält, dann wird die bedingte Formatierung aktiv. Ist der Kommentar komplett leer, trifft dies nicht zu. Der zu suchende Parameter (Zelle mit gesuchtem Namen) ist in diesem Beispiel $N$6.
Anzumerken hierbei ist: Wenn im Kommentar ein Text enthalten ist, aber der zu suchende Parameter leer ist, trifft die Bedingung ebenfalls zu.

Thread kann abgehakt werden.

Danke für die Unterstützung.

Gruß
Diesaster

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2021 CAD.de | Impressum | Datenschutz