'Toms Code
Option Explicit
Private LinkRanges(6) As Range
Private PreviousLinkRangeValues(6) As Currency
Private Sub Workbook_Open()
StartWatchingLinks
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
StopWatchingLinks
End Sub
Friend Sub StartWatchingLinks()
Dim x As Integer
On Error Resume Next
For x = 0 To 6
With Me.Worksheets("positions")
Set LinkRanges(x) = .Range(Choose(x + 1, "S5", "S8", "S11", "S14", "S17", "S20", "S23"))
PreviousLinkRangeValues(x) = LinkRanges(x).Value
End With
Next
ThisWorkbook.SetLinkOnData "MT4|BID!AUDUSDm", "'ThisWorkbook.OnLinkUpdate ""0""'"
ThisWorkbook.SetLinkOnData "MT4|BID!EURAUDm", "'ThisWorkbook.OnLinkUpdate ""1""'"
ThisWorkbook.SetLinkOnData "MT4|BID!EURGBPm", "'ThisWorkbook.OnLinkUpdate ""2""'"
ThisWorkbook.SetLinkOnData "MT4|BID!EURUSDm", "'ThisWorkbook.OnLinkUpdate ""3""'"
ThisWorkbook.SetLinkOnData "MT4|BID!GBPUSDm", "'ThisWorkbook.OnLinkUpdate ""4""'"
ThisWorkbook.SetLinkOnData "MT4|BID!USDCHFm", "'ThisWorkbook.OnLinkUpdate ""5""'"
ThisWorkbook.SetLinkOnData "MT4|BID!USDJPYm", "'ThisWorkbook.OnLinkUpdate ""6""'"
End Sub
Friend Sub StopWatchingLinks()
ThisWorkbook.SetLinkOnData "MT4|BID!AUDUSDm", ""
ThisWorkbook.SetLinkOnData "MT4|BID!EURAUDm", ""
ThisWorkbook.SetLinkOnData "MT4|BID!EURGBPm", ""
ThisWorkbook.SetLinkOnData "MT4|BID!EURUSDm", ""
ThisWorkbook.SetLinkOnData "MT4|BID!GBPUSDm", ""
ThisWorkbook.SetLinkOnData "MT4|BID!USDCHFm", ""
ThisWorkbook.SetLinkOnData "MT4|BID!USDJPYm", ""
End Sub
Friend Sub OnLinkUpdate(LinkIndex As Integer)
On Error GoTo ErrOnLinkUpdate
If LinkRanges(LinkIndex).Value > PreviousLinkRangeValues(LinkIndex) Then
LinkRanges(LinkIndex).Offset(, -3).Interior.Color = vbBlue
ElseIf LinkRanges(LinkIndex).Value < PreviousLinkRangeValues(LinkIndex) Then
LinkRanges(LinkIndex).Offset(, -3).Interior.Color = vbRed
End If
PreviousLinkRangeValues(LinkIndex) = LinkRanges(LinkIndex).Value
ErrOnLinkUpdate:
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
''Code Changes Number Format between 2 decimal places and 4 decimal places
''depending on if "JPY" is detected in that row
Dim myRange As Range
Dim c As Range
Dim myFormat As String
Set myRange = Intersect(Target, Columns("A"))
If Not myRange Is Nothing Then
Application.ScreenUpdating = False
For Each c In myRange
If InStr(UCase(c.Value), "JPY") Then
myFormat = "0.00"
Else
myFormat = "0.0000"
End If
Intersect(Rows(c.Row), Range("F:F,J:J,H:H,L:L,N:N,P:P,T:T,S:S,V:V")).NumberFormat = myFormat
Next c
Set myRange = Nothing
Application.ScreenUpdating = True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
''This code is supposed to Call Beep based on cell criteria
''In this case - IF cell value falls below 100 and then above 100 then BEEP
Static aboveLimit As Boolean
If 100 < Application.Min(Range("G5:O5")) Then
If Not (aboveLimit) Then Call sndPlaySound32("C:\documents and settings\" & Environ("USERNAME") & "\desktop\Positions\Sounds\Beep.WAV", 0)
aboveLimit = True
Else
aboveLimit = False
End If
End Sub