2016-07-03 8 views
2

範囲内の特定のセルをスキャンする必要があります。いくつかのセルが空であれば、そのセルには "cell is empty"というメッセージが書き込まれます。私は、次のことをしようとしている:実行時エラー#13 - 型不一致(範囲... then ...)

Sub Empty() 

     Sheets("My sheet").Select 
     If Range("C5:C12,C15:C22,C25:C32,C36:C43,C46:C53,C56:C63,C66:C73,C76:C83,D4,D14,D24,D35,D45,D55,D65,D75").Value = "" Then 
      Range("C5:C12,C15:C22,C25:C32,C36:C43,C46:C53,C56:C63,C66:C73,C76:C83,D4,D14,D24,D35,D45,D55,D65,D75").Value = "cell is empty" 
     End If 
    End sub 

I am getting the error: run time error #13 - type mismatch. 

私と同じ問題を抱えている可能性のある他の人々を助けるように、私は、以下に提示作業のソリューションを補完するつもりです。 「:いいえ細胞が見つからなかった実行時エラー 『1004』」とも、あなたのニーズに合わせ、特定のワークシートをスキャンするアレイ:私は、メッセージを妨げるエラー処理を追加

Sub myEmpty() 
     Dim rng As Range 
     On Error GoTo NoBlanks 
     Dim MyArray As Worksheet 

     For Each MyArray In ActiveWorkbook.Worksheets 
      Select Case MyArray.Name 
      Case Is = "Sheet 1", "Sheet 2", "Sheet 3", "Sheet n-1", "Sheet n" 

      With MyArray 
      Set rng = .Range("C5:C12,C15:C22,C25:C32,C36:C43,C46:C53,C56:C63,C66:C73,C76:C83,D4,D14,D24,D35,D45,D55,D65,D75") 
       If CBool(Application.CountBlank(rng)) Then 
       rng.SpecialCells(xlCellTypeBlanks).Value = "cell is empty" 
       End If 
      End With 

      Case Else 
      End Select 
      Next MyArray 

NoBlanks: 

CreateObject("WScript.Shell").Popup " There are no empty cells", 0.7, "INfo:" 

End Sub 

答えて

2

空白セルが1つ以上あることを確認した後、xlCellTypeBlanksプロパティのRange.SpecialCells methodを使用してください。

Sub myEmpty() 
    dim rng as range 
    with Sheets("My sheet") 
     set rng = .Range("C5:C12,C15:C22,C25:C32,C36:C43,C46:C53,C56:C63,C66:C73,C76:C83,D4,D14,D24,D35,D45,D55,D65,D75") 
     If cbool(application.countblank(rng)) then 
      rng.specialcells(xlCellTypeBlanks).Value = "cell is empty" 
     End If 
    end with 
End sub 

空とIsEmptyはVBAの予約語です。通常、それらの用途変更を避けるのが最善です。

+0

ご返信ありがとうございます。出来た! –

2

あなたが得ます複数のセルを含むRangeで.Valueを呼び出すとVariantの配列が返されるため、エラー13が発生します。あなたは、どちらかのようなIf文で範囲内の複数のセルに一つの条件を適用することはできません - あなたは、ループを使用して、個々のセルをテストする必要があります。

Public Sub FlagEmptyCells() 
    Dim target As Range 
    Set target = Range("C5:C12,C15:C22,C25:C32,C36:C43,C46:C53,C56:C63,C66:C73,C76:C83,D4,D14,D24,D35,D45,D55,D65,D75") 

    Dim current As Range 
    For Each current In target 
     If current.Value = vbNullString Then current.Value = "cell is empty" 
    Next 
End Sub 

も注意してくださいあなたはサブという名前がないことをEmpty - 予約語です。

+0

Comintern、あなたのソリューションも良い選択です。あなたの時間をありがとう! –

関連する問題