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

autom. Ausf. Makro bei Zelländ. d. Berechn.

autom. Ausf. Makro bei Zelländ. d. Berechn.
Seher
Hallo in die Runde,
folgendes Problem:
ich habe über die Funktion "Listen Erstellen" eine Liste in Excel eingerichtet. Nun kann ich in der Spalte V nach einem Ergebnis sortieren. Heißt in der Spalte "V5:V55" wird ein Ergebnis 1 oder "" geliefert. Egal welches Ergebnis geliefert wird,
es soll ein Makro automatisch ausgeführt werden.
Beispiel: Ergebnis ist 1 --> Makro ausführen
Ergebnis ist "" --> Makro ausführen
Ziel ist es, immer nur die Zeile anzeigen zu lassen, wo das Ergebnis 1 ist.
Problem ist nun, daß eine automatische Ausführung des Makros nicht funktioniert.
Nur durch die Aktivierung durch eine Tastenkombination kann das Makro gestartet werden.
Folgendes Modul existiert bereits:
Sub Arbitrage()
'
' Arbitrage Makro
' Makro am 14.04.2010 von pseher aufgezeichnet
'
' Tastenkombination: Strg+y
'
' Selection.AutoFilter Field:=22, Criteria1:="1"
' Range("V2").Select
'
End Sub
In der Tabelle 1 habe ich ein "Worksheet" eingerichtet mit folgendem Inhalt:
Private Sub Worksheet_Change(ByVal Target As Range)
End Sub

Nun muß ich diese Zeilen noch mit Leben füllen, weiß aber beim besten Willen nicht wie ich dies tun kann.
Auf der Suche im Internet, habe ich leider noch keine Lösungen für mein Problem gefunden.
Könnt ihr mir hierbei helfen?
Grüße
AW: autom. Ausf. Makro bei Zelländ. d. Berechn.
30.04.2010 12:01:05
Björn
Hallo,
dazu sollte man noch wissen, was du genau mit "automatisch ausführen" meinst.
Wir brauchen irgendeine Bedingung, ein Ereignis, irgendwas, wann es ausgeführt werden soll.
Gruß
Björn B.
AW: autom. Ausf. Makro bei Zelländ. d. Berechn.
30.04.2010 12:14:21
Seher
Hallo Björn,
das Makro, welches ich mit der Tastenkombination Strg+y manuell aktivierenkann, soll immer dann automatisch ausgeführt werden, wenn in der Spalte V eine 1 auftaucht. "Erlischt" die 1 wieder, so soll die Zeile auch wieder verschwinden.
Bedingung ist also: bei Ergebnis 1 in Spalte V ---- Makro ausführen
erlischt die 1 wieder in Spalte V --- dann Makro ausführen
Ist es jetzt verständlicher?
Grüße
Peter
Anzeige
AW: autom. Ausf. Makro bei Zelländ. d. Berechn.
30.04.2010 12:25:21
Seher
die Spalte V soll natürlich nach der 1 sortiert und immer nur die Zeile mit dem Ergebnis 1 angezeigt werden.
AW: autom. Ausf. Makro bei Zelländ. d. Berechn.
30.04.2010 13:06:25
Björn
Nein, es ist nicht verständlicher....
Problem, "auftauchen" ist kein Ereignis, das programmiertechnisch umgesetzt werden kann.
Ich kann zwar eine Abfrage starten, ob da ne 1 drin steht, und dann was machen, aber was startet diese Abfrage.
Also wie kommt denn die 1 in diese Zelle? Händisch? Dann wäre der Eintrag in diese Zelle der Auslöser.
Steht da ne Formel drin, kommt es ja woanders her. Das muss ich wissen.
Was machst DU, dass sich was in der Zelle ändert.
Genaue Logik bitte, wann was passieren soll...
Du machst das doch mit Autofilter, oder? Warum willst Du dann noch vorher sortieren?
Autofilter zeigt doch auch unsortiert nur die entsprechenden Ergebnisse an.
Gruß
Björn b.
Anzeige
AW: autom. Ausf. Makro bei Zelländ. d. Berechn.
30.04.2010 13:32:23
Seher
In Ordnung.
Das Ergebnis wird per Berechnung über die =WENN Funktion berechnet.
Grundlage für die Berechnung sind Zahlen die automatisch über einen Server gezogen werden. Ich gebe also nichts manuell ein.
und ja es ist die Autofilterfunktion. Da habe ich mich vermutlich falsch ausgedrückt.
Grüße
Peter
AW: autom. Ausf. Makro bei Zelländ. d. Berechn.
30.04.2010 13:38:16
Björn
Hallo,
Du schreibst:
automatisch über einen Server gezogen
Wie wird das gestartet? Du musst doch irgendeine Logik haben, wann dein Makro gestartet werden soll.
Wird das auch über Makro gestartet?
Oder beim Öffnen?
Ich brauche irgendein greifbares Ereignis in Excel, sonst kann ich das doch nicht programmieren...
Vielleicht verstehtst du mich auch nicht...
Woher weiß Excel, wann das Makro ausgeführt werden soll (Woher weißt Du es)?
Wird ein Knopf gedrückt, die Mappe geöffnet oder was auch immer...
Gruß
Björn B.
Anzeige
AW: autom. Ausf. Makro bei Zelländ. d. Berechn.
30.04.2010 14:24:11
Seher
ich arbeite mit einer Informationsplattform auf meinem Rechner. Die Aktienkurse werden über den Anbieter Reuters in mein Excelsheet gezogen. Die Verbindung zu dem Server besteht permanent. Sobald Excel geöffnet ist, werden die Daten ins Exelsheet gezogen. Das Makro wird auch beim Start der DAtei aktiviert. Makro wurde per "Makro aufzeichnen" eingerichtet.
Ich habe Dir mal die Exceldatei mit angehängt.Dann wird es hoffentlich verständlicher.
Erklärung zur Datei:
1. Die Daten Spalte 11-16 werden über den o.g. Reutersserver gezogen. (Zur Veranschaulichung für Dich geht das
natürlich nicht, deshalb nur die Zahlen)
2. In der Spalte 20 erfolgt nun die Berechung über die Formelfunktion =WENN ...
3. Über die Autofilterfunktion kann ich in der Zelle T1 nach der 1 filtern.
4. Diesen Vorgang der Filterung möchte ich nicht manuell tätigen müssen, sondern dieser soll immer dann automatisch
erfolgen, wenn in der Spalte 20 sich etwas verändert. Die Filterung soll immer nach "1" erfolgen. Heißt, es sollen nur
die Zeilen angezeigt werden, wo die 1 in der Spalte 20 vorhanden ist.
5. Am Beispiel Arques in der Zeile 5 soll dies verdeutlicht werden.
Die Spalten 11 - 16 sind vermutlich für die Programmierung nicht relevant. Relevant soll ja nur das berechnete
Ergebnis in der Spalte 20 sein.
6. Vorgang ist also folgender:
1. in Spalte 20 wird in irgendeiner Zeile die 1 "errechnet"
2. Daraufhin soll die Autofilterfunktion nach der 1 in der Spalte 20 filtern
3. Die Filterfunktion soll immer dann anspringen, wenn sich in der Spalte 20 irgendetwas ändert.
Hoffentlich hilft Dir das jetzt weiter.
Ich hoffe das mit dem Dateiupload hat funktioniert.
Güße
Peter
Anzeige
AW: autom. Ausf. Makro bei Zelländ. d. Berechn.
30.04.2010 15:06:09
Björn
Hallo,
"wenn in der Spalte 20 sich etwas verändert"
Das war die Information, die ich wollte. Der Rest interessiert mich eigentlich nicht ;-)
Du brauchst folgendes:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Bei jeder Änderung der Tabelle wird Makro ausgeführt
'*Variablendeklaration        *
Dim RaBereich1 As Range  '*
Dim RaZelle As Range     '*
'Bildschirmaktualisierung ausschalten
Application.EnableEvents = False
'Bereich der Wirksamkeit
Set RaBereich1 = Range("T1:T1000")   'Diesen Bereich musst du anpassen.
For Each RaZelle In Range(Target.Address)
'Wenn die veränderte Zelle im Bereich der Wirksamkeit liegt dann...
If Not Intersect(RaZelle, RaBereich1) Is Nothing Then
Call Arbitrage   'Jetzt wird Dein Makro aufgerufen!
End If
Next RaZelle
Application.EnableEvents = True
End Sub

Das musst du im Projektexplorer in die enstrechenden Tabelle einfügen.
Dein Makro sollte dann in einem Modul stehen.
Mein Makro prüft jetzt, ob die Zellen T1 bis T1000 geändert wurden.
Wenn Du diesen Bereich eingrenzen kannst, wird das ganze viel schneller.
Gruß
Björn B.
P.S.
Muss jetzt weg, komme erst wieder heute Abend dazu, falls Du noch Fragen hast bzw. was nicht richtig funktioniert.
Anzeige
AW: autom. Ausf. Makro bei Zelländ. d. Berechn.
30.04.2010 16:19:41
Seher
Hallo Björn,
vielen Dank schon einmal dafür. Habe es mal so eingetippert wie Du mir es freundlicher Weise geschrieben hast. Doch das funzt noch nicht. Wird kein Makro ausgeführt. Nur wenn ich manuell eine 1 eintrage und mit Enter bestätige, dann wird das Makro ausgeführt.
Ich habe auch überlegt, ob evtl. ein periodisches Ausführen des Makros einfacher zu programmieren ginge. Damit könnte ich auch leben. beispielsweise jede 15 Sekunden.
Vielleicht hast Du ja noch eine Idee.
Grüße
Peter
AW: autom. Ausf. Makro bei Zelländ. d. Berechn.
30.04.2010 18:52:28
Björn
Hallo,
mit Timern kenne ich mich nicht aus.
Mach doch einfach einen Knopf und starte das Makro manuell...
Baue mal ganz am Anfang von dem Worksheet_Change eine MsgBox ein, ob das überhaupt auslöst, wenn die Daten importiert werden. Falls ja, dann stimmt was an meinem Code nicht, wenn nichtmal die MSgBox kommt, dann hast Du ein Problem.
Mir fällt außer dem Worksheet_Change nichts ein, was da greifen könnte.
Ich muss nochmal fragen:
Wie werden die Daten übertragen? ISt das verknüpft? Macht das ein Programm? Ein Addin?
Sorry wenn ich so blöd frage, aber damit kenne ich mich null aus...
Vielleicht kannst Du da ansetzen und von dort aus gleich Dein Makro starten lassen.
Gruß
Björn B.
Anzeige
AW: autom. Ausf. Makro bei Zelländ. d. Berechn.
03.05.2010 11:33:43
Seher
Hallo Björn,
die Daten werden per Funktion gezogen (=RtGet + entspr. Codes + Kürzel). Reuters hat vermutlich ein App oder irgendsowas implementiert, damit die Daten überhaupt in Excel veröffentlicht werden können.
Grüße
Peter
AW: autom. Ausf. Makro bei Zelländ. d. Berechn.
06.05.2010 19:30:04
Seher
Hallo Björn,
so sieht nun der endgültige Code aus. Wollte es Dir auch noch einmal zeigen, falls Du daran interessiert bist :-)
So funktioniert es so, wie ich es gern haben möchte
Grüße
Peter
'### Code in einem allgemeinen Modul ###
'Erstellt unter Excel 2007 Option Explicit Public bolCalculate As Boolean
'### Code in DieseArbeitsmappe ###
Option Explicit
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Dim p As Long
'Dim sh As Worksheet
On Error GoTo Fehlerbearbeitung
If Sh.Name = "MDAX" Then
If bolCalculate = False Then
bolCalculate = True
Application.ScreenUpdating = False
Application.EnabelEvents = False
For p = 3 To 60
If Sh.Cells(p, 8) = 1 Then
Sh.Cells(p, 8).EntireRow.Hidden = False
Else
Sh.Cells(p, 8).EntireRow.Hidden = True
End If
Next p
Application.EnableEvents = True
Application.ScreenUpdating = True
bolCalculate = False
End If
End If
Exit Sub
Fehlerbearbeitung:
Application.EnableEvents = True
Application.ScreenUpdating = True
bolCalculate = False
End Sub

Anzeige
AW: autom. Ausf. Makro bei Zelländ. d. Berechn.
30.04.2010 20:36:28
hary
hallo Peter
wenn die 1 mit einer Formel berechnet wird. Und der Code durch die Formel ausgeloest werden soll, dann nimm

Private Sub Worksheet_Calculate()
'Hier dein Code
End Sub

Calculate spricht bei berechnung durch eine Formel an.
Gehoert in den Code der Tabelle wo die Formel berechnet.
gruss hary
AW: autom. Ausf. Makro bei Zelländ. d. Berechn.
30.04.2010 20:42:04
hary
hallo Peter
wenn die 1 mit einer Formel berechnet wird. Und der Code durch die Formel ausgeloest werden soll, dann nimm

Private Sub Worksheet_Calculate()
'Hier dein Code
End Sub

Calculate spricht bei berechnung durch eine Formel an.
Gehoert in den Code der Tabelle wo die Formel berechnet.
gruss hary
Anzeige
AW: autom. Ausf. Makro bei Zelländ. d. Berechn.
03.05.2010 14:29:34
Seher
Hallo Harry,
vielen Dank für Deinen Hinweis.
Nun beschränkt sich mein Wissen bzgl. der VBA-Programmierung auf das aufzeichnen von Makros. Leider jedoch nicht auf eigentliche Programmierung.
Ich hatte nun schon mal versucht einen Code zu schreiben, bin jedoch immer in eine Endlosschleife mit Fehlermeldungen gekommen, sodaß ich excel beenden mußte. Vermutlich lag es daran, daß sekündlich Berechnungen durchgeführt worden sind.
Kannst du mir evtl. einen grundlegenden Aufbau dieses Codes liefern, so könnte ich einen aus meinem Freundeskreis fragen, ob er damit etwas anfangen kann. Ihn habe ich auch schon drauf angesetzt, doch ist er am "verwzweifeln" :-)
Ich denke, daß die Calculate - Methode wahrscheinlich das Problem zu lösen scheint.
Grüße
Peter
Anzeige
AW: autom. Ausf. Makro bei Zelländ. d. Berechn.
03.05.2010 17:19:00
hary
Hallo Peter
hier mal eine Mappe. Der Code steht im Code der Arbeitsmappe.
Bei 1 in SpalteV(5 bis 55) wir die Zeile nicht ausgeblendet. Ermittelt wir die 1 durch eine Formel die auf Tabelle2 greift.
Trage in Tabelle2 in SpalteA(Zeile 5 bis 55) eine 1 ein und schaue in Tabelle1. Kannst auch die 1 aus Tabelle2 rausnehmen.
https://www.herber.de/bbs/user/69373.xls
gruss hary
AW: autom. Ausf. Makro bei Zelländ. d. Berechn.
04.05.2010 09:21:36
Seher
Hallo Harry,
Super. das funktioniert schon mal soweit. Werden tatsächlich nur die angezeigt, wo die 1 als Ereignis intrifft. Problem ist nun, daß die Berechnung in hundertstel Sekunden aktualisiert wird und Excel nun "flackert". Gibt es dafür auch noch eine Lösung?
Du hast mir schon echt gut geholfen :-)
Grüße
Peter
AW: autom. Ausf. Makro bei Zelländ. d. Berechn.
04.05.2010 10:25:51
hary
Moin Peter
Erste zeile gehoert unter die Dim Zeile
ausschalten kann man das Flacker mit:

Application.ScreenUpdating = False 'ausschaalten der Bildschirm aktuellisierung
'hier der Code
Application.ScreenUpdating = True 'einschalten der Bildschirm aktuellisierung
End Sub

aber wenn die Berechnungen in hunderstel sekunden Abstaenden gemacht werden, weiss ich nicht ob's hilft.
gruss hary
evtl. die automatische Berechnung erstmal aus schalten und spaeter einschalten. Weil sehen kannst Du den wechsel beim Flackern sowie nicht.
AW: autom. Ausf. Makro bei Zelländ. d. Berechn.
04.05.2010 11:44:36
Seher
Hallo Harry,
vielen Dank für Deine Unterstützung. Bin jetzt aber an einem Punkt angekommen, wo ich Dich auch nicht weiter nerven möchte. Leider funktioniert das nicht. Habe aber auch im Netz noch keine andere Alternative gefunden. Leider.
Ich gehe mal weiter auf die Suche...:-)
Grüße
Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige