2017-03-15 24 views
2

この同じタイトルで多くの質問を読んだ後も、コード実行時にタイトルのエラーが発生しないように苦労しています。"オートメーションエラー:呼び出されたオブジェクトがクライアントから切断されました。別のサブキーから呼び出すとき

コードはここに始まる:目的:「オートメーションエラーと、上記最終行に失敗する前

Sub Toggle_ErrorPrevention(ByVal intShapeNumberVal As Integer) 

    Dim lngHLSegmentNumberingRow As Long 
    Dim lngClaimRemovalHaveWantedClaimsRow As Long 
    Dim lngClaimRemovalHaveUnwantedClaimsRow As Long 


    With ThisWorkbook.Sheets("Correction Type Options").Columns(1) 
     lngHLSegmentNumberingRow = .Find(What:="HL Segment Numbering", Lookat:=xlWhole).Row 

lngHLSegmentNumberingRow = .Find(What:="HL Segment Numbering", Lookat:=xlWhole).Rowを:

Option Explicit 

Sub Toggle_Click() 

    Dim lngMoveBy As Long 
    Dim Loop1 As Long 
    Dim intShapeNumber As Integer 

    intShapeNumber = Right(Application.Caller, Len(Application.Caller) - Len("Toggle")) 
    If ThisWorkbook.Sheets("Correction Type Options").Shapes("ToggleBackground" & intShapeNumber).Fill.ForeColor.RGB = RGB(255, 255, 255) Then Toggle_ErrorPrevention intShapeNumber 

は、同じモジュール内のこのサブへ移動呼び出されたクライアントから切断されました。

エラーが発生した後に文書を保存して閉じてから再起動すると、「修正タイプオプション」シートの列1が強調表示されます。

これは私が初めて他のサブシステムからサブシステムに電話をかけているので、問題の潜在的な原因としてコール自体に特別な注意を払ってきました。私はまだそれが正しいと確信していません。

Option Explicit 

Sub Toggle_Click() 

    Dim lngMoveBy As Long 
    Dim Loop1 As Long 
    Dim intShapeNumber As Integer 

    intShapeNumber = Right(Application.Caller, Len(Application.Caller) - Len("Toggle")) 
    If ThisWorkbook.Sheets("Correction Type Options").Shapes("ToggleBackground" & intShapeNumber).Fill.ForeColor.RGB = RGB(255, 255, 255) Then Toggle_ErrorPrevention intShapeNumber 

    If ThisWorkbook.Sheets("Correction Type Options").Shapes("ToggleBackground" & intShapeNumber).Fill.ForeColor.RGB = RGB(255, 255, 255) Then 
     lngMoveBy = 0.6 
    Else 
     lngMoveBy = -0.6 
    End If 

    With ThisWorkbook.Sheets("Correction Type Options").Shapes("Toggle" & intShapeNumber) 
     For Loop1 = 1 To 24 
      .IncrementLeft lngMoveBy 
      DoEvents 
     Next Loop1 
    End With 

    If ThisWorkbook.Sheets("Correction Type Options").Shapes("ToggleBackground" & intShapeNumber).Fill.ForeColor.RGB = RGB(255, 255, 255) Then 
     With ThisWorkbook.Sheets("Correction Type Options").Shapes("ToggleBackground" & intShapeNumber) 
      .Fill.ForeColor.RGB = RGB(0, 255, 0) 
      .TextFrame.Characters.Text = "On" 
      .TextFrame.Characters.Font.Bold = True 
      .TextFrame.Characters.Font.ColorIndex = 1 
      .TextFrame.HorizontalAlignment = xlLeft 
      .TextFrame.VerticalAlignment = xlCenter 
     End With 
    Else 
     With ThisWorkbook.Sheets("Correction Type Options").Shapes("ToggleBackground" & intShapeNumber) 
      .Fill.ForeColor.RGB = RGB(255, 255, 255) 
      .TextFrame.Characters.Text = "Off" 
      .TextFrame.Characters.Font.Bold = True 
      .TextFrame.Characters.Font.ColorIndex = 1 
      .TextFrame.HorizontalAlignment = xlRight 
      .TextFrame.VerticalAlignment = xlCenter 
     End With 
    End If 

End Sub 

Sub Toggle_ErrorPrevention(ByVal intShapeNumberVal As Integer) 

    Dim lngHLSegmentNumberingRow As Long 
    Dim lngClaimRemovalHaveWantedClaimsRow As Long 
    Dim lngClaimRemovalHaveUnwantedClaimsRow As Long 


    With ThisWorkbook.Sheets("Correction Type Options").Columns(1) 
     lngHLSegmentNumberingRow = .Find(What:="HL Segment Numbering", Lookat:=xlWhole).Row 
     lngClaimRemovalHaveWantedClaimsRow = .Find(What:="Claim Removal - Have Wanted Claims", Lookat:=xlWhole).Row 
     lngClaimRemovalHaveUnwantedClaimsRow = .Find(What:="Claim Removal - Have Unwanted Claims", Lookat:=xlWhole).Row 
    End With 

    With ThisWorkbook.Sheets("Correction Type Options") 
     If intShapeNumberVal + 1 = lngHLSegmentNumberingRow Then 
      If .Shapes("ToggleBackground" & lngClaimRemovalHaveWantedClaimsRow - 1).Fill.ForeColor.RGB = RGB(0, 255, 0) Then Application.Run .Shapes("Toggle" & lngClaimRemovalHaveWantedClaimsRow - 1).OnAction 
      If .Shapes("ToggleBackground" & lngClaimRemovalHaveUnwantedClaimsRow - 1).Fill.ForeColor.RGB = RGB(0, 255, 0) Then Application.Run .Shapes("Toggle" & lngClaimRemovalHaveUnwantedClaimsRow - 1).OnAction 
     End If 
     If intShapeNumberVal + 1 = lngClaimRemovalHaveWantedClaimsRow Then 
      If .Shapes("ToggleBackground" & lngHLSegmentNumberingRow - 1).Fill.ForeColor.RGB = RGB(0, 255, 0) Then Application.Run .Shapes("Toggle" & lngHLSegmentNumberingRow - 1).OnAction 
     End If 
     If intShapeNumberVal + 1 = lngClaimRemovalHaveUnwantedClaimsRow Then 
      If .Shapes("ToggleBackground" & lngHLSegmentNumberingRow - 1).Fill.ForeColor.RGB = RGB(0, 255, 0) Then Application.Run .Shapes("Toggle" & lngHLSegmentNumberingRow - 1).OnAction 
     End If 
    End With 

End Sub 
+0

このエラーはExcelのバージョン間の互換性(非常に簡単な検索から)と関連があるようです。このサイトを検索用語として間違えて検索すると、さまざまな原因と解決策が表示されます – CallumDA

+0

何を試してみましたか?私はあなたに警告しますが、コードとはあまり関係がないようであれば、私たちが手助けするのは難しいかもしれません。 – CallumDA

+0

使用しているExcelのバージョンはどれですか?また、コードの残りの部分を投稿することをお勧めします。 – CallumDA

答えて

2

免責事項:私は、これはロングショットで実現...

このエラーがでポップアップするように見えることができます場合は、ここで


は、完全なモジュールであります珍しい時間と1つの(半)反復的な解決策は可能な限り最良の方法でオブジェクトを扱うことです。だから、これを試してみてください。

Sub Toggle_ErrorPrevention(ByVal intShapeNumberVal As Integer) 

    Dim findRange As Range 
    Dim lngHLSegmentNumberingRow As Long 
    'more declarations 

    Set findRange = ThisWorkbook.Sheets("Correction Type Options").Columns(1).Find(What:="HL Segment Numbering", Lookat:=xlWhole) 

    If Not rng Is Nothing Then 
     lngHLSegmentNumberingRow = findRange.Row 
    End If 

    'other code... 
End Sub 

あなたがNothingのプロパティを取得することはできませんので.Findは、何も返されない場合は、エラーを持っているでしょう。

+0

この長いエラーがうまくいきました。ありがとうございました。私は、このエラーを防ぐためにすべてが適切であることを確認するために他の質問についての警告を見ました。それで、 'lngHLSegmentNumberingRow = ThisWorkbook.Sheets(" Correction Type Options ")を使って私の行が完全に修飾されていることを確認しようとしました。 ).Row'しかし、それはうまくいきませんでした。何らかの理由で、オブジェクトに保存するのが最初に動作します。 – puzzlepiece87

+0

@ puzzlepiece87ワークブック/ワークシート/範囲への参照を完全に完全に*今後もそれを続けてください。潜在的なエラーからあなた自身を救うでしょう。ここでの主なことは '.Find'は' Range'(何か見つかった場合)または 'Nothing'(何も見つからない場合)を返すことを認識しています。 '.Row'から' Nothing'を実行することはできませんので、最初にチェックしなければなりません。これは、範囲オブジェクトを返すメソッドを覚えておくと便利なことです。 – CallumDA

関連する問題