2017-01-02 4 views
0

私はVBAにはかなり新しく、以下のコードブロックをデバッグするのは苦労しています。私の目標は、列7のセルの内容に基づいて、アクティブなワークシートの行の一部(たとえばその5%)を色付けすることです。エラーコードはランタイムエラー '1004'です。アプリケーション定義またはオブジェクト定義のエラーです。どのような助けや指針をいただければ幸いです。For .. Next LoopとSelect Caseを使用したワークシートの色分け方法

編集:lastRowはコードの他のブロックでもうまく機能しており、プログラムの前で宣言され割り当てられているため、現在問題の疑いがありません。

' Color code data based on strings or numbers found in column 7 
    Dim lastRow as Integer 
    lastRow = 9,000 
    Dim blockStatus As Variant 

    For blockRow = 3 To lastRow 
' the following row triggers runtime error  
    blockStatus = ActiveWorkbook.ActiveSheet.Range(Cells(blockRow, 7)).Value 
     Select Case blockStatus 
      Case Is = "ADMIN*" 
      Range(Cells(blockRow, 1), Cells(blockRow, 11)).Font.Bold = True 
      Case Is = "OTHER*" 
      Range(Cells(blockRow, 1), Cells(blockRow, 11)).Font.Color = RGB(192, 0, 0) 
      Case Is = "*@*" 
      Range(Cells(blockRow, 1), Cells(blockRow, 11)).Font.Color = RGB(0, 176, 80) 
      Case Else 
     End Select 
    Next blockRow 
+0

*** lastRow ***に値を割り当てる必要があります。そのため、 'Cells()'が死んでいるのです。 –

+0

申し訳ありませんが、私はこれを解決するためにここで少しのコードを編集しました。完全マクロプログラムでは、プログラムがこのブロックに到達する前に、lastRowが宣言され、割り当てられます。 – FrogLegs

+0

blockStatus = ActiveWorkbook.ActiveSheet.Range(Cells(blockRow、7))を変更してみてください。blockStatus = ActiveSheet.Cells(blockRow、7)の値 – Absinthe

答えて

0

アブサンのコメントは(範囲のパラメータが、アドレス、または細胞のいずれかになります)あなたのエラーを解決します。

私はあなたのコードがあなたのCaseステートメントが上記の文字列でLike操作を実行しようとしていることを期待していると思わないと考えています。

その場合は、次のように、あなたのコードを変更:

With ActiveSheet 
    For blockRow = 3 To lastRow 
     blockStatus = .Cells(blockRow, 7).Value 
     With .Range(.Cells(blockRow, 1), .Cells(blockRow, 11)) 
      Select Case True 
       Case blockStatus Like "ADMIN*" 
        .Font.Bold = True 
       Case blockStatus Like "OTHER*" 
        .Font.Color = RGB(192, 0, 0) 
       Case blockStatus Like "*@*" 
        .Font.Color = RGB(0, 176, 80) 
       Case Else 
      End Select 
     End With 
    Next blockRow 
End With 

を(注:Case Like "ADMIN*"を行うことは可能ではないですが、私は、このようなCase blockStatus Like "ADMIN*"などCase文でSelect Case True、むしろ非直観的に使用されてきた理由である)

関連する問題