- ベストアンサー
ExcelのVBAでデータ処理・エラーの解決方法
- ExcelのVBAを使用して、データ処理を行いたい場合、以下のようなコードを組むことができます。しかし、○の個数を数える部分でエラーが発生することがあります。エラーを解決するためには、セルの範囲指定に注意する必要があります。
- データが入力されたセルの範囲を指定する際、ActiveSheet.Range()の引数にCells()関数を使用します。引数には、範囲の開始セルと終了セルを指定します。しかし、Cells()関数は、指定した範囲内にあるセルの値を取得するために使用されるため、Range()関数内で使用するとエラーが発生します。
- エラーを解決するためには、範囲の開始セルと終了セルを直接指定する必要があります。たとえば、Cells(i, 2)を指定する場合は、Range("B" & i)と記述します。このように変更することで、エラーが解消され、正常に動作するようになります。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
cnt = WorksheetFunction.CountIf(ActiveSheet.Range(Cells(i, 2), Cells(i, 256)), "○") ここで○が無かった場合cntは0になるので j = 3 * cnt はJ=0になります ですので kakunin = Cells(i, j) は列0を指すのでエラーとなります。アプリケーション定義またはオブジェクト定義のエラー
その他の回答 (3)
- kmetu
- ベストアンサー率41% (562/1346)
たとえば ○ だけの例ですが If Target.Column = 3 And Target.Row >= 6 Then For Each c In Range(Target.Address) If Cells(c.Row, Target.Column) = "○" Then Range(Cells(c.Row, Target.Column + 1), Cells(c.Row, Target.Column + 2)).Interior.ColorIndex = xlNone Else Range(Cells(c.Row, Target.Column + 1), Cells(c.Row, Target.Column + 2)).Interior.ColorIndex = 15 End If Next End If こんな感じではいかがですか。
補足 Cellの列と行を間違っているようなふしはありますが Cellを使う場合(行,列) Rangeは(列行)ですが。 そこらへん見直せば治ると思います。
お礼
回答ありがとうございます。 Cells(行,列)は理解しています。 原因は他にありました。 お世話になりました。
○を数えるところではERRは出ていません 下記のところでひかかってます。 見ているセルがおかしいと思いますが? F8でデバッグしてみてください。 Date関数のところに○を呼び込もうとしてERRになってます date1 = Cells(i, j + 1) date2 = Cells(i, j + 2)
お礼
確かにそうでした!! If cnt = 0 Then j = 3 Else j = 3 * cnt End If に変更したことで、解決しました。 お世話になりました。