Autor
|
Thema: Makrostart (3058 mal gelesen)
|
stefga Mitglied
Beiträge: 138 Registriert: 17.05.2007 Excel97
|
erstellt am: 23. Apr. 2009 21:54 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe mir folgendes einfaches Makro zur Durchführung einer Zielwertsuche per Makrorekorder erzeugt(siehe auch beigefügtes file "Zielwertsuche"): Code: Sub Zielwertsuche() Range("c1").GoalSeek Goal:=Range("b1"), ChangingCell:=Range("a1") End Sub
Wenn ich es händisch über MAKRO-AUSFÜHREN starte läuft es. Wenn ich es per Active-X Steuerelementbutton starten will mit
Code: Private Sub CommandButton1_Click() Application.Run "Zielwertsuche" End Sub
läuft es nicht (Fehlermeldung „die goalseek-Methode des Range objects ist fehlerhaft“;). Ich habe statt „application.run“ auch schon „call“ oder nur den Makronamen probiert, immer kommt die Fehlermeldung. Ich frage mich seit Tagen wieso das nicht funktioniert. Jetzt hatte ich heute Gelegenheit es mal mit Excel03 zu testen und dort klappt der Aufruf per active-x Button problemlos. Also scheint es an meiner Excel-Version 97 zu liegen aber ich habe mit EX97 auch schon Makros per active-x button gestartet, also wo liegt das Problem? Mittlerweile habe ich zwar eine Alternative gefunden (wenn ich statt des Active-x Elemets den button aus der Formularleiste verwende klappts auch in Excel97) aber ich will ja nicht dumm sterben ;) und der Aufruf per Steuerelement button wäre mir dann doch lieber.Und gleich noch eine zweite Frage: ich habe ein Makro (auf Tabellenblatt1), welches per „worksheet_calculate()“ automatisch gestartet wird und die Skalierung der x-Achse eines Diagramms automatisch anpasst
Code: Private Sub Worksheet_Calculate() Dim chDiagramm As Chart Set chDiagramm = ActiveSheet.ChartObjects(1).Chart With chDiagramm .Axes(xlCategory).MaximumScale = Range("a14") .Axes(xlCategory).MinimumScale = 0 End With Set chDiagramm = Nothing End Sub
Soweit kein Problem, es läuft wie gewünscht. Wenn ich jedoch in irgendein anderes Tabellenblatt der Mappe wechsle und in einer beliebigen Zelle einen beliebigen Eintrag machen möchte, kommt die Fehlermeldung „die chartsobjects-Eigenschaft des worksheet-objektes kann nicht zugeordnet werden“ und im VBA-Code wird die Zeile Code: Set chDiagramm = ActiveSheet.ChartObjects(1).Chart
gelb markiert. Ich habe mal versucht die Situation in beigefügtem file "worksheet_calc" nachzubauen, nur leider funktioniert es in diesem dummie-file ohne Probleme . Ich vermute mit meinem bescheidenen Halbwissen mal folgendes: durch den Zelleintrag auf z.B: Tabellenblatt 2 wird das „worksheet_calculate“ ausgelöst wird und somit das Makro gestartet. Da aber kein Diagramm auf dem „active sheet“ Tabellenblatt2 ist, kommt es zur Fehlermeldung. Soweit wäre es für mich nachvollziehbar, aber was ich nicht verstehe: ein Makro mit Start per „worksheet_calculate“ wird doch nur gestartet, wenn man sich auch auf dem Tabellenblatt befindet, in dem das Makro hinterlegt ist (also hier Tabellenblatt 1)? Oder woran könnte es sonst liegen?------------------ Gruß Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nepumuk Mitglied Entwicklungsleiter
Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 24. Apr. 2009 01:21 <-- editieren / zitieren --> Unities abgeben: Nur für stefga
Hallo Stefan, 1. GoalSeek versucht auf die Tabelle zuzugreifen, kann aber nicht, da der Commandbutton den Fokus hat. Setz mal die TakeFocusOnClick-Eigenschaft des Buttons auf False. 2. Da irrst du dich. Formel werden auch berechnet, wenn sie in einer anderen Tabelle sind. Flüchtige Formeln (Heute, Jetzt, Zufallszahl .....) werden sogar berechnet, wenn sie in einer anderen Mappe sind. Wenn du das Diagramm unbedingt bei jeder Neuberechnung skalieren musst, dann so: Code: Private Sub Worksheet_Calculate() With ChartObjects(1).Chart.Axes(xlCategory) .MaximumScale = Range("a14") .MinimumScale = 0 End With End Sub
Innerhalb der Klasse musst du nicht mit dem Klassenobjekt hantieren. Activesheet kann jedes Blatt in jeder Mappe innerhalb der Application sein, daher möglich meiden. Der Umweg über eine Objektvariable bringt keinen Vorteil, es dauert nur ein bisschen länger. Set Nothing kannst du dir in dem Fall auch sparen, denn die Variable ist ja auf Prozedurebene deklariert und du erzeugst keine neue Instanz des Objektes. Das musst du nur machen, wenn du eine Klasseninstanz mit New erzeugst, bzw. mit der CreateObject-Funktion eine ActiveX-Komponente anlegst. ------------------ Gruß Nepumuk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beverly Mitglied Dipl.-Geologe (Rentner)
Beiträge: 394 Registriert: 11.08.2007
|
erstellt am: 24. Apr. 2009 08:17 <-- editieren / zitieren --> Unities abgeben: Nur für stefga
Hi Stefan, zu Frage 2: der Fehler tritt dann auf, wenn in dem betreffenden Arbeitsblatt kein Diagramm vorhanden ist. Das kannst du umgehen, indem du dies vorher prüfst: Code: Private Sub Worksheet_Calculate() Dim chDiagramm As Chart If ActiveSheet.ChartObjects.Count > 0 Then Set chDiagramm = ActiveSheet.ChartObjects(1).Chart With chDiagramm .Axes(xlCategory).MaximumScale = Range("a14") .Axes(xlCategory).MinimumScale = 0 End With End If Set chDiagramm = Nothing End Sub
------------------ Bis später, Karin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nepumuk Mitglied Entwicklungsleiter
Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 24. Apr. 2009 16:31 <-- editieren / zitieren --> Unities abgeben: Nur für stefga
|
stefga Mitglied
Beiträge: 138 Registriert: 17.05.2007 Excel97
|
erstellt am: 24. Apr. 2009 20:16 <-- editieren / zitieren --> Unities abgeben:
Hallo, Zitat: Setz mal die TakeFocusOnClick-Eigenschaft des Buttons auf False
Danke, genau das war der Fehler. Jetzt läufts. Und auch die Achsenskalierung klappt auch Dank Eurer Hilfe. Zitat: Da irrst du dich. Formel werden auch berechnet, wenn sie in einer anderen Tabelle sind
Aber wenn ich Dein Makro zur Achsenskalierung nehme und in mein Beispielfile "worksheet_calc" auf Tabellenblatt 1 setzte, wird das Diagramm bei jeder neuen Eingabe eines x-Wertes neu skaliert. Wenn ich das Makro auf ein anderes Tabellenblatt setze (und auf Blatt1 lösche), kann ich auf Blatt1 die x-Werte des Diagrammes beliebig ändern, ohne das die Achsenskalierung angepasst wird. Also wird das Makro doch nur gestartet, wenn die Neuberechnung auch auf dem entsprechenden Tabelenblatt stattfindet Sonst wäre es doch von der Funktion her mehr eine Art "workbook_calculate" statt ein "worksheet_calculate", zumindest meinem Verständnis nach. Gibt es eigentlich noch andere Möglichkeiten ein Makro automatisch zu starten? In einem Fall habe ich nämlich ein Problem mit dem Start per "worksheet_calculate": und zwar wird hier zur Achsenskalierung ein Wert herangezogen, der per Zielwertsuche berechnet wird. Und bei jedem Iterationsschritt der Zielwertsuche wird sofort das Diagramm neu skaliert. Dies führt teilweise zu Fehlermeldungen, anscheinend da während der Iteration auch negative Zahlen auftreten, die bei einer noch stattfindenden Potenzbildung zu #Zahl! als Wert für die Achsenskalierung und somit zur Fehlermeldung führen. Deshalb bin ich dazu übergegengen, das Makro hier per "worksheet_change" zu starten und für den Makrostart alle Zellen abzufragen, die in die Formel zur Berechnung des Wertes für die Skalierung einfließen. Dummerweise fließt aber auch ein Wert ein, der aus einer dropdown Kombinationsfeld ausgewälht wird. Und wenn hier ein neuer Wert ausgewählt wird, startet das Makro nicht da es sich für Excel dabei anscheinen nicht um eine Werteeingabe handelt. Deshalb suche ich nach einer Möglichkeit das Makro automatisch zu starten, welche sowohl auf eine Werteingabe als auch auf eine Auswahl aus einer Combobox reagiert. Gibt es so etwas? In meinem VBA-Buch bin ich auf sog. "Chart-Ereignisse" gestossen. Es gibt wohl ein solches Ereignis namens "calculate", welches reagiert, wenn ein Zitat "Diagramm auf Basis veränderter Daten neu gezeichnet" wird. Könnte mir das weiterhelfen? Bisher habe ich nämlich noch nicht genau kapiert, wie das programmtechnisch zu realisieren ist, aber wenn das erfolgversprechend ist muss ich mich mal weiter damit befassen. ------------------ Gruß Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beverly Mitglied Dipl.-Geologe (Rentner)
Beiträge: 394 Registriert: 11.08.2007
|
erstellt am: 24. Apr. 2009 21:06 <-- editieren / zitieren --> Unities abgeben: Nur für stefga
Zitat: Original erstellt von Nepumuk: und wenn sich auf dem ActiveSheet doch ein Diagramm befindet, aber ein ganz anderes?
...dann soll es offensichtlich nicht skaliert werden, denn im Code ist der Bezug explizit ChartObjects(1) gesetzt. ------------------ Bis später, Karin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nepumuk Mitglied Entwicklungsleiter
Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 24. Apr. 2009 22:34 <-- editieren / zitieren --> Unities abgeben: Nur für stefga
Hallo Karin, ChartObjects(1) gibt es auf jeder Tabelle, welche mindestens ein Diagramm beinhaltet. ChartObjects ist eine Eigenschaft der Tabelle nicht der Mappe. Du hast eine Mappe mit drei Tabellen und auf jeder Tabelle befindet sich ein Diagramm, dann hast du dreimal ChartObjects(1). Wenn du nun Bezug nimmst auf ActiveSheet.ChartObjects(1) wird also, je nachdem welche Tabelle aktiv ist, ein anderes Diagramm angesprochen. ------------------ Gruß Nepumuk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beverly Mitglied Dipl.-Geologe (Rentner)
Beiträge: 394 Registriert: 11.08.2007
|
erstellt am: 25. Apr. 2009 08:52 <-- editieren / zitieren --> Unities abgeben: Nur für stefga
Zitat: Original erstellt von Nepumuk: ChartObjects(1) gibt es auf jeder Tabelle, welche mindestens ein Diagramm beinhaltet. ChartObjects ist eine Eigenschaft der Tabelle nicht der Mappe.Du hast eine Mappe mit drei Tabellen und auf jeder Tabelle befindet sich ein Diagramm, dann hast du dreimal ChartObjects(1). Wenn du nun Bezug nimmst auf ActiveSheet.ChartObjects(1) wird also, je nachdem welche Tabelle aktiv ist, ein anderes Diagramm angesprochen.
Das ist mir alles hinreichend bekannt und für das Problem von Stefan ohne Relevanz. ------------------ Bis später, Karin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nepumuk Mitglied Entwicklungsleiter
Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 25. Apr. 2009 09:44 <-- editieren / zitieren --> Unities abgeben: Nur für stefga
Hi, und warum schreibst du dann so ein hirnloses Programm mit ActiveSheet.ChartsObjects im Klassenmodul der Tabelle, in der das ChartObject 100% eindeutig ist? Scheint also eher so, als hättest du überhaupt nichts begriffen. Woher willst du denn wissen, dass es in anderen Tabelle keine Charts gibt? Deine zusätzliche Abfrage würde den Zugriff auf ein falsches Chart auf alle Fälle nicht verhindern. Ist ja wie im Fahrplan nachschauen ob ich einen geschlossenen Bahnübergang trotzdem überqueren kann. Laut Fahrplan kommt kein Zug, du bist aber trotzdem tot weil der außerplanmäßige dich überrollt hat. ------------------ Gruß Nepumuk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 25. Apr. 2009 11:36 <-- editieren / zitieren --> Unities abgeben: Nur für stefga
|
Beverly Mitglied Dipl.-Geologe (Rentner)
Beiträge: 394 Registriert: 11.08.2007
|
erstellt am: 25. Apr. 2009 13:35 <-- editieren / zitieren --> Unities abgeben: Nur für stefga
über solche Beiträge wie deine letzten bin ich erhaben und sehe es unter meiner Würde, darauf einzugehen. Trage bitte die Differenzen, die du offensichtlich mir gegenüber hegst, nicht auf dem Rücken der Fragesteller aus! Das schadet dem Forum und ist eines MVP ganz und gar nicht würdig. ------------------ Bis später, Karin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stefga Mitglied
Beiträge: 138 Registriert: 17.05.2007 Excel97
|
erstellt am: 25. Apr. 2009 13:42 <-- editieren / zitieren --> Unities abgeben:
Schönen guten Tag, das Wetter ist doch heute viel zu schön zum streiten Punkt 1: die Makros von euch beiden funktionieren bei mir. Somit nochmal recht schönen Dank an euch beide. Punkt 2: trotzdem stehe ich noch immer auf dem Schlauch: ein Makro mit "worksheet_calculate" soll, wenn ich euch richtig verstehe, immer gestartet werden, sobald auf einem beliebigen Tabellenblatt der Mappe eine Neuberechnung stattfindet? Dazu folgender Test: Ich habe bei mir das Achsenskaliermakro (egal ob die Variante von Nepumuk oder Beverly) in der VBA-Umgebung unter "VBA-Projekt - MicrosoftExcelObjekte - Tabelle1" platziert. Das zu skalierende Diagramm und die dazugehörige Wertetabelle sitzen in Excel auf Tabelle1: -Bei einer neuen Werteeingabe (bzw. Neuberechnung)auf Tabelle1 wird das Diagramm neu skaliert -->OK. -Nun kopiere ich den Makrocode auf "VBA-Projekt - MicrosoftExcelObjekte - Tabelle2" (und lösche ihn auf Tabelle1), Diagramm+Wertetabelle bleiben auf Tabelle1-->bei neuer Werteeingabe (bzw. Neuberechnung) wird das Diagramm nicht neu skaliert. D.h. für mich, dass das Makro durch das worksheet_calculate nur dann gestartet wird, wenn die Werteeingabe (bzw. Neuberechnung) auf demjenigen Tabellenblatt stattfindet, auf dem auch das Makro platziert ist. Ansonsten müsste die Skalierung doch auch in dem zweiten Fall durchgeführt werden Also wo mache ich den Fehler??? Punkt 3: falls jemand noch etwas dazu sagen kann/möchte, ob es außer "worksheet_calculate" noch eine Makrostartmöglichkeit gibt, die sowohl auf eine Werteeingabe als auch eine Comboboxauswahl reagiert (siehe mein obiger Beitrag), würde ich mich freuen. Ansonsten besten Dank und schönes Wochenende. ------------------ Gruß Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beverly Mitglied Dipl.-Geologe (Rentner)
Beiträge: 394 Registriert: 11.08.2007
|
erstellt am: 25. Apr. 2009 13:51 <-- editieren / zitieren --> Unities abgeben: Nur für stefga
Hi Stefan, zu Punkt 3: bei deiner direkten Werteeingabe in einer Zelle kannst du das Worksheet_Change Ereignis verwenden. Außerdem könntest du den Code auch direkt bei Auswahl in der ComboBox auslösen. ------------------ Bis später, Karin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stefga Mitglied
Beiträge: 138 Registriert: 17.05.2007 Excel97
|
erstellt am: 25. Apr. 2009 14:03 <-- editieren / zitieren --> Unities abgeben:
Hallo Karin, freut mich nochmal von Dir zu hören. das "worksheet_change" spricht aber nur auf die Werteeingabe an und nicht auf eine Auswahl aus einer Combobox. Das Problem ist, dass mein Max-Wert für die Diagrammskalierung berechnet wird in der Art von Max-Wert = a1+b1 (wobei a1 ein händisch eingegebener Wert ist, b1 der Ausgabewert aus einer Combobox). Somit wird die Neuskalierung nur bei Werteeingabe in a1 neu durchgeführt, aber nicht, wenn in der Combobox ein neuer Wert ausgewählt wird. Zitat:
Außerdem könntest du den Code auch direkt bei Auswahl in der ComboBox auslösen
Was Du damit meinst habe ich leider nicht verstanden? ------------------ Gruß Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beverly Mitglied Dipl.-Geologe (Rentner)
Beiträge: 394 Registriert: 11.08.2007
|
erstellt am: 25. Apr. 2009 15:13 <-- editieren / zitieren --> Unities abgeben: Nur für stefga
Hi Stefan, schreibe den Code für die eigentliche Diagrammerstellung in ein allgemeines Modul (z.B. als Sub DiaSkalieren) und rufe sie im Worksheet_Change Ereignis auf:
Code: Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" Then DiaSkalieren End Sub
Für die ComboBox aus der Steuerelmente-Toolbox würde der Code dann so aussehen:
Code: Private Sub ComboBox1_Change() DiaSkalieren End Sub
Somit würde das Diagramm sowohl bei einem Eintrag in Zelle A1 als auch bei Auswahl mit der ComboBox skaliert werden.:edit ich habe mir mal erlaubt, den Zellwert auf A1 zu ändern gruss @Τhomas Ηarmening ------------------ Bis später, Karin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beverly Mitglied Dipl.-Geologe (Rentner)
Beiträge: 394 Registriert: 11.08.2007
|
erstellt am: 25. Apr. 2009 15:16 <-- editieren / zitieren --> Unities abgeben: Nur für stefga
|
stefga Mitglied
Beiträge: 138 Registriert: 17.05.2007 Excel97
|
erstellt am: 25. Apr. 2009 20:25 <-- editieren / zitieren --> Unities abgeben:
Hallo Karin, da mich weder Excelhilfe, google noch stundenlanges rumprobieren weitergebracht haben muss ich nochmal nachfragen: die Sub DiaSkalieren steht in Modul1 und sieht bei mir folgendermaßen aus: Code:
Sub DiaSkalieren() Dim chDiagramm As Chart Set chDiagramm = ActiveSheet.ChartObjects(1).Chart With chDiagramm .Axes(xlCategory).MaximumScale = Range("f88") .Axes(xlCategory).MinimumScale = Range("f87") End With Set chDiagramm = Nothing End Sub
Die beiden private subs zum Aufruf von DiaSkalieren sehen aus wie von Dir beschrieben und stehen auf dem Tabellenblatt1. Der Aufruf über das worksheet_change Ereignis (sprich Werteingabe in a1) funktioniert, aber beim anklicken der Combobox kommt immer die Fehlermeldung "die maximum scale Eigenschaft des axis objektes kann nicht festgelegt werden" und die Zeile ".Axes(xlCategory).MaximumScale = Range("f88") " wird markiert. Gibts hier auch einen Kniff wie z.B. mit dem Fokus? (wobei die Combobox lt. meinem schlauen Buch keine TakeFocusOnClick Eigenschaft besitzt). ------------------ Gruß Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beverly Mitglied Dipl.-Geologe (Rentner)
Beiträge: 394 Registriert: 11.08.2007
|
erstellt am: 26. Apr. 2009 10:22 <-- editieren / zitieren --> Unities abgeben: Nur für stefga
Hi Stefan, ich kann den Fehler bei mir nicht nachvollziehen. Lade deine Mappe doch mal hoch, denn offensichtlich ist in meiner nachgebauten Arbeitsmappe irgend etwas anders als in deiner. ------------------ Bis später, Karin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stefga Mitglied
Beiträge: 138 Registriert: 17.05.2007 Excel97
|
erstellt am: 26. Apr. 2009 14:57 <-- editieren / zitieren --> Unities abgeben:
Hallo, so hier meine Tabelle (stark vereinfacht). bei Werteingabe in zelle a2 oder a3 fuktioniert die Skalierung, bei Comboboxauswahl kommt die erwähnte Fehlermeldung. ------------------ Gruß Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beverly Mitglied Dipl.-Geologe (Rentner)
Beiträge: 394 Registriert: 11.08.2007
|
erstellt am: 26. Apr. 2009 16:18 <-- editieren / zitieren --> Unities abgeben: Nur für stefga
Hi Stefan, das Problem tritt bei Excel2002 nicht auf, jedoch bei Excel97. Wenn man allerdings vorher eine Zelle aktiv macht, tritt der Fehler nicht mehr auf - da geht Excel97 offensichtlich anders vor als die neueren Versionen. Den Code musst du außerdem nicht in das GotFocus Ereignis der ComboBox schreiben, da die Skalierung ja erst nach Auswahl in der ComboBox erfolgen soll:
Code: Private Sub ComboBox1_Change() Worksheets("Tabelle1").Range("A2").Select DiaSkalieren End Sub
Wenn nicht A2 (oder eine andere fest vorgegebene Zelle) selektiert werden soll, kannst du ja vielleicht mit dem SelectionChange Ereignis ermitteln, welche Zelle vorher ausgewählt war und kannst dieser wieder selektieren.Zu deiner anderen Frage aus der hochgeladenen Mappe: werwende generell GotFocus und nicht Click für das Zuweisen von ListFillRange - der Code würde sonst jedes Mal ausgeführt sobald in der ComboBox geklickt wird, also auch wenn die ComboBox bereits aktiv ist. Das ist jedoch nur erforderlich, wenn die CombobBox angewählt wird, denn während du dich in der ComboBox befindest wird das ListFillRange (in deinem Fall) ja nicht geändert. ------------------ Bis später, Karin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stefga Mitglied
Beiträge: 138 Registriert: 17.05.2007 Excel97
|
erstellt am: 26. Apr. 2009 20:17 <-- editieren / zitieren --> Unities abgeben:
Hallo Karin, in meiner hochgeladenen Testmappe funktioniert das mit dem select einwandfrei, in meiner richtigen Mappe leider nicht. Wenn ich
Code: Worksheets("Tabelle1").Range("A2").Select
einfüge klappt zwar der Makrostart per Combobox, dafür der Start per Werteeingabe mit diesem Makro
Code:
private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A1:Z500")) Is Nothing Then DiaSkalieren End If
nicht mehr. Ich hab versucht die Zeile mit dem select hier auch einzubauen, aber das bringt auch keine Verbesserung. Auch das problem, dass bei irgendeiner Werteeingabe auf einam anderen Tabellenblatt eine Fehlermeldung kommt habe ich jetzt wieder. Momentan weiss ich keinen Rat mehr, ich muss morgen mal weiter testen. Schönen Abend noch.
------------------ Gruß Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beverly Mitglied Dipl.-Geologe (Rentner)
Beiträge: 394 Registriert: 11.08.2007
|
erstellt am: 26. Apr. 2009 22:17 <-- editieren / zitieren --> Unities abgeben: Nur für stefga
Hi Stefan, im Worksheets_Change Ereignis ist das Selektieren der Zelle nicht notwendig, da ja die Tabelle sowieso aktiv ist. Hast du in deiner Originalarbeitsmappe vielleicht noch das Worksheet_Calculate Ereignis drin? Das muss natürlich raus. Wieso sollte der von mir gepostete Code einen Fehler auslösen wenn du in einem anderen Tabellenblatt etwas änderst - hier ist immer nur der Bezug auf das aktive Tabellenblatt. Mehr kann ich dazu aus der Ferne, ohne deine Originaldatei zu kennen, leider nicht sagen. ------------------ Bis später, Karin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |