vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Warum laufen meine Subs nicht schön hintereinander? 
Autor: Carsten09
Datum: 26.06.09 10:19

Hallo zusammen!

Ich bin dabei, mir ein Makro zu basteln, mit dem ich schnell die Performance von Bond Märkten
anschauen kann. Das Makro ist bereits mit der Finanzsoftware Bloomberg verknüpft und benutzt
2x grosse Datenabfragen.

Das funktioniert so: Ich sage, welche Daten ich möchte, und die Server von Bloomberg schicken mir
die Daten zurück. Alle Parameter sind richtig und beide Abfragen laufen EINZELND super!

Nun möchte ich das Ganze aber in einem grossen Modul haben und will also beide Abfragen hintereinander laufen haben. Wie kriege ich das hin? Momentan sieht der Sourcecode gut aus, bevor das jeweilige Sub zu Ende ist, wird schön aufs nächste verlinkt! Ich möchte doch eigentlich nur, dass VBA das Makro von oben bis unten liest!

Das Problem: Nach der zweiten Abfrage springt das Makro wieder ziemlich weit nach oben an, anstatt einfach mit dem dazugehörigen Empfangsteil weiterzumachen.

Schaut euch ruhig mal einen Teil vom Sourcecode an, vielleicht könnt ihr mir ja nen Rat geben!

Dankeschön!!
Carsten


 
' Die BB-Verbindung ist ein Objekt, das auch nach ende des Makros (Anfrage 
' senden) erhalten bleibt,
' um bei Datenleiferung erneute Aktionen auslösen zu können.
 
Option Explicit
Public WithEvents bb_call As BLP_DATA_CTRLLib.BlpData
Public currencyamountA, zA As Integer
Dim CurrencyfieldA() As Variant
Public currencyamount, ReqCurrenciesAmount, sec, f, z, u, d As Integer
Public ReqFields
Public ReqCurrencies
Dim Erg(), ErgA(), ErgB(), ErgC(), Currencyfield(), Currencyoverview() As _
  Variant
Dim my_date
Public Dat2
 
Sub Currencyabfrage()
Dim currencycookieA()
 
Dim i As Integer
Set bb_call = New BLP_DATA_CTRLLib.BlpData
 
 
Sheets("Currencies Neu").Select
Cells(1, 1).End(xlDown).Select
currencyamountA = Selection.Row - 1
 
ReDim currencycookieA(currencyamountA - 1)
ReDim CurrencyfieldA(currencyamountA - 1)
 
Sheets("Currencies Neu").Select
For i = 0 To currencyamountA - 1
    CurrencyfieldA(i) = Cells(i + 2, 1).Value & " CURNCY"
    currencycookieA(i) = i + 2
Next i
 
Dim Dat1A, Dat2A, Dat3A As String
 
Dim m As String
Dim t As String
Dim y As String
Dim K
Dim ZN, cookie As Long
Dim a As Variant
Dim d As Integer
 
 
 
    Dat1A = Sheets("Liste").Cells(16, 2).Value
    Dat3A = Sheets("Liste").Cells(16, 2).Value ' Ist eigentlich überflüssig, 
    ' aber hilft die unnötigen Hochkommata in Dat2 zu entfernen.
    Dat2A = Sheets("Liste").Cells(16, 3).Value
 
 
bb_call.AutoRelease = False
 
bb_call.SubscriptionMode = BySecurity
For i = 0 To currencyamountA - 1
 For d = 0 To 1
        With bb_call
 
        .DisplayNonTradingDays = AllCalendar
        .Periodicity = bbDaily
        .NonTradingDayValue = PreviousDays
      If d = 1 Then
          ZN = currencycookieA(i) + currencyamountA
           .GetHistoricalData CurrencyfieldA(i), ZN, "PX_Last", Dat2A, Dat2A
 
 
        Else
 
           .GetHistoricalData CurrencyfieldA(i), currencycookieA(i), "PX_Last", _
             Dat1A, Dat1A
 
 
      End If
        End With
    Next d
Next i
 
bb_call.Flush
i = 0
End Sub
 
Private Sub bb_call_Data(Security As Variant, cookie As Long, Fields As _
  Variant, Data As Variant, Status As Long)
Dim i, K, c, j, p, b  As Integer
 
Sheets("Currencies Neu").Select
Cells(cookie, 2) = Data(0, 1)
 
 
 
    If u = currencyamountA * 2 Then
 
    Set bb_call = Nothing
 
    CurrencyBearbeitung
 
    End If
 
u = u + 1
 
 
 
 
End Sub
Sub CurrencyBearbeitung()
Dim i As Integer
 
 
Sheets("Currencies Neu").Select
   For i = 0 To currencyamountA - 1
        Cells(i + 2, 10) = Cells(i + 2 + currencyamountA, 2) / Cells(i + 2, 2) _
          ' Berechnet die relative Veränderung. Datum 2 : Datum 1!
   Next i
 
Dim Waehrung As Variant
 
Sheets("Currencies").Select
 
For i = 0 To sec - 1
 
 
 
    'If Cells(i + 1, 3).Value = "USDEUR" Then
    Waehrung = Cells(i + 1, 3).Value
 
        Select Case Waehrung
        Case "USDCHF"
            Cells(i + 1, 4).Value = Cells(i + 1, 13)
        End Select
 
Next i
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Warum laufen meine Subs nicht schön hintereinander?1.440Carsten0926.06.09 10:19
Re: Warum laufen meine Subs nicht schön hintereinander?728Dirk26.06.09 16:24
Re: Warum laufen meine Subs nicht schön hintereinander?678Carsten0901.07.09 08:14

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel