ここから本文です

【エクセルVBA】チェックしてください(泣。)

aia********さん

2013/2/615:46:40

【エクセルVBA】チェックしてください(泣。)

Sub エラーチェック()

Dim Maxrow As Long
Dim i As Long

Maxrow = Cells(Rows.Count, "D").End(xlUp).Row

For i = 1 To Maxrow

If InStr(Cells(i, "D"), "aaa") > 0 Then Cells(i, "E").Value = "エラー"

Next i

End Sub


-----------------------------

D列に aaa という特定の文字列が含まれていたら
その隣のセル(E列)に エラー と入力するためのものです。

なぜか、型が一致しません、となります。
どなたかご教授お願いします。

閲覧数:
473
回答数:
3

違反報告

ベストアンサーに選ばれた回答

ipl********さん

2013/2/616:14:08

>If InStr(Cells(i, "D"), "aaa") > 0 Then Cells(i, "E").Value = "エラー"



If InStr(Cells(i, "D").Text, "aaa") > 0 Then Cells(i, "E").Value = "エラー"

にして、値ではなく表示しているテキストでチェックするとどうでしょうか。
ちなみにCells(i, "D")だけだと、Cells(i, "D").Value の省略になるみたいです。

質問した人からのコメント

2013/2/7 10:56:26

ご回答ありがとうございます。
出来ました!!!!!
省略してしまう悪い癖のせいですね。。。
まだまだ初心者なのだからちゃんとします!!!!
本当に助かりました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

prs********さん

2013/2/616:18:29

こんにちは
各セルの列表示を数字形式にしましたので試して下さい。
Sub エラーチェック()

Dim Maxrow As Long
Dim i As Long

Maxrow = Cells(Rows.Count, 4).End(xlUp).Row

For i = 1 To Maxrow

If InStr(Cells(i, 4), "aaa") > 0 Then Cells(i, 5).Value = "エラー"

Next i

End Sub

ja7********さん

編集あり2013/2/616:41:41

> なぜか、型が一致しません、となります。

D列にError値になっているセルは、ありませんか?
例えば #VALUE!、#NAME!、#NUM!、#N/A 、#DIV/0 など

そこを除外して こんな感じにすると どうですか。

Sub エラーチェック()
Dim Maxrow As Long
Dim i As Long
Maxrow = Cells(Rows.Count, "D").End(xlUp).Row
For i = 1 To Maxrow
    With Cells(i, "D")
        If Not IsError(.Value) Then
            If InStr(.Value, "aaa") > 0 Then _
                    Cells(i, "E").Value = "エラー"
        End If
    End With
Next i
End Sub

◎ セルのError値も"エラー"と表示するなら 上のコードを

For i = 1 To Maxrow
    With Cells(i, "D")
        If Not IsError(.Value) Then
            If InStr(.Value, "aaa") > 0 Then _
                    Cells(i, "E").Value = "エラー"
        Else
            Cells(i, "E").Value = "エラー"
        End If
    End With
Next i



まぁ、そのままのコードでError値を飛ばすなら

Cells(i, "D") <-- プロパティを省略しているのをTextプロパティを使用します。
省略するとValueです。
プロパティを省略しない習慣を付けましょう。(意味を考えながら・・・)

Sub エラーチェック()
Dim Maxrow As Long
Dim i As Long
Maxrow = Cells(Rows.Count, "D").End(xlUp).Row
For i = 1 To Maxrow
    If InStr(Cells(i, "D").Text, "aaa") > 0 Then _
                Cells(i, "E").Value = "エラー"
Next i
End Sub

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる