2017-07-10 12 views
-2

Excel VBAの通知システムを作成しようとしていましたが、解決できないと思われるレンガの壁にぶつかりました。私が得たエラー404 - オブジェクトが必要は、私が作成したコードです。皆さん、お手伝い願います。BloombergアドインをExcelに使用したときのエラー404

Public price_col As Range 
Public vol_col As Range 

Public Sub setVars() 
    Set price_col = Range("E2:E90") 
    Set vol_col = Range("J2:J90") 
End Sub 

Private Sub Worksheet_Calculate() 
    checkPrice price_col 
    checkVol vol_col 
End Sub 

Private Sub Worksheet_Change(ByVal target As Range) 
    setVars 

    If Not Intersect(target, price_col) Is Nothing Then 
     checkPrice target 
    End If 

    If Not Intersect(target, vol_col) Is Nothing Then 
     checkVol target 
    End If 
End Sub 

Public Sub checkPrice(target As Range) 

    **For Each cell In target** 

    Dim row As Long 
    row = Range(cell.Address).row 

    If cell.Value > 0.025 Then 
     If ThisWorkbook.getPriceState(row) <> 1 Then 
      MsgBox "Price " & Application.WorksheetFunction.RoundDown(cell.Value * 100/1, 0) * 1 & "% rise: " & Range(cell.Address).Offset(0, -2).Value 
      ThisWorkbook.setPriceState row, 1 
     End If 
    ElseIf cell.Value < -0.025 Then 
     If ThisWorkbook.getPriceState(row) <> -1 Then 
      MsgBox "Price " & Application.WorksheetFunction.RoundDown(cell.Value * 100/1, 0) * 1 & "% fall: " & Range(cell.Address).Offset(0, -7).Value 
      ThisWorkbook.setPriceState row, -1 
     End If 
    ElseIf cell.Value <> "" Then 
     If ThisWorkbook.getPriceState(row) <> 0 Then 
      ThisWorkbook.setPriceState row, 0 
     End If 
    End If 
    Next cell 
End Sub 

Public Sub checkVol(vol_col As Range) 
For Each cell In vol_col 
    Dim row As Long 
    row = Range(cell.Address).row 

    If cell.Value >= 2.5 Then 
     If ThisWorkbook.getVolState(row) <> 3 Then 
      MsgBox "Volume Change above 250%" & Range(cell.Address).Offset(0, -7).Value 
      ThisWorkbook.setVolState row, 3 
     End If 
    ElseIf cell.Value >= 2 Then 
     If ThisWorkbook.getVolState(row) <> 2 Then 
      MsgBox "Volume Change above 200%" & Range(cell.Address).Offset(0, -7).Value 
      ThisWorkbook.setVolState row, 2 
     End If 
    ElseIf cell.Value >= 1.5 Then 
     If ThisWorkbook.getVolState(row) <> 1 Then 
      MsgBox "Volume Change above 150%" & Range(cell.Address).Offset(0, -7).Value 
      ThisWorkbook.setVolState row, 1 
     End If 
    ElseIf cell.Value <> "" Then 
     If ThisWorkbook.getVolState(row) <> 0 Then 
      ThisWorkbook.setVolState row, 0 
     End If 
    End If 
Next cell 
End Sub 

I「は、標的内の各セルのための」コードにエラーが発生しました。それは太字であった。助けてくれてありがとう!

+1

に追加する必要があります。この正確なエラーに関する700+の既存の質問は役に立ちませんでしたか? –

+0

(a) 'Calculate'イベントまたは' Change'イベントからの呼び出し中にエラーが発生していますか? (b) 'getPriceState'、' setPriceState'、 'getVolState'と' setVolState'は何をしますか? (それらのいずれかがシートを更新するか、 'checkPrice'を呼び出しますか?) – YowE3K

+0

@ YowE3K変更イベントから発生しました。 ExcelはBloomberg APIに接続されているので、ティックデータでティックを抽出することができます。したがって、金額と量産 – noob

答えて

0

calculateイベントが発生し、変数が設定されていない場合、エラーが発生します。少なくともsetVarsの電話をWorksheet_Calculate

+0

ありがとう! Worksheet_Calculateのすぐ下にsetVarsを追加しましたが、問題はまだあります。 – noob

関連する問題