[[20150305131839]] 『改行のあるセル内容の全角チェック』(kk) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『改行のあるセル内容の全角チェック』(kk)

文字入力チェックのコードを書いております。

セルの内容に変更があった場合に、50文字以内か、全角になっているかを
チェックしたいのですが、改行がある場合に上手くチェックできません。

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim wCellVal As String
    Dim ws1 As Worksheet

    Set ws1 = Worksheets("新規")

    wCellVal = Replace(ws1.Cells(Target.Row, Target.Column), vbLf, "")
    ★↑ここで改行が消されてるはずなのですが・・・消えてないみたいです

    'D列のチェック
    If Target.Column = 4 Then
        If Len(wCellVal) > 50 Then
            MsgBox "商品名は50文字以内で入力してください。", vbOKOnly + vbExclamation, "入力エラー"
            Exit Sub
        End If

        'If Len(wCellVal) * 2 <> LenB(StrConv(wCellVal, vbFromUnicode)) Then
    ★↑これで駄目だったので↓でしてみましたが駄目でした
        If wCellVal = StrConv(wCellVal, vbWide) Then
            MsgBox "商品名は全角で入力してください。", vbOKOnly + vbExclamation, "入力エラー"
            Exit Sub
        End If
    End If

< 使用 アプリ:2003形式で保存 2013、2003で使用しています、使用 OS:Windows8 >


 処理をしているシートと「新規」シートの関係はどのようなものでしょうか?
 同一シートであるなら、

 Private Sub Worksheet_Change(ByVal Target As Range)
    Dim wCellVal As String
    Dim res
    For Each t In Target
        If t.Column = 4 Then
            res = ""
            wCellVal = Replace(t.Value, vbLf, "")
            If Len(wCellVal) > 50 Then
                res = "商品名は50文字以内で入力してください。"
            End If
            If wCellVal <> StrConv(wCellVal, vbWide) Then
                res = res & IIf(res <> "", vbNewLine, "") & "商品名は全角で入力してください。"
            End If
        End If
        If res <> "" Then
            MsgBox res, vbOKOnly + vbExclamation, "入力エラー"
            Exit Sub
        End If
    Next
 End Sub
 ということでしょうか。
(Mook) 2015/03/05(木) 13:54

Mookさんありがとうございます。
wCellVal <> StrConv(wCellVal, vbWide) のところの = と <> のミスだったみたいですね。
また、コードの整理ありがとうございます。活用させて頂きます。
こういう細かい所のデバッグができないようじゃまだまだですね((+_+))
(kk) 2015/03/05(木) 14:29

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.