Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2669 / 13646 ツリー ←次へ | 前へ→

【66641】C列の値が13だとエラーになるマクロ RIE 10/9/18(土) 12:22 質問[未読]
【66643】Re:C列の値が13だとエラーになるマクロ かみちゃん 10/9/18(土) 13:37 発言[未読]
【66644】Re:C列の値が13だとエラーになるマクロ RIE 10/9/18(土) 14:09 お礼[未読]
【66645】Re:C列の値が13だとエラーになるマクロ teian 10/9/18(土) 18:29 発言[未読]
【66646】Re:C列の値が13だとエラーになるマクロ SS 10/9/18(土) 18:55 発言[未読]

【66641】C列の値が13だとエラーになるマクロ
質問  RIE  - 10/9/18(土) 12:22 -

引用なし
パスワード
   いつも勉強させていただいています。
わたしはマクロを覚えたての初心者です。

A列、B列に異なる情報のバーコードをスキャンした値が入っていって、C列、D列にLEN関数を入れ、桁数を表示しています。
A列、B列のデータにテレコが起きないようにです。
A列のデータが13桁、B列のデータが10桁です。

ワークシートクラスのマクロに、C列の値が13だったら、エラーのメッセージボックスを表示させるマクロを作りたいのですが、ご教示できませんでしょうか。

現在、わたしの知識を動員し下記のように書いて、作動しません。

有識者の方、ご返答お願いできますでしょうか。


Private Sub Worksheet_ACTIVE()

Dim x As String
x = Range("C:C")
If x <> "13" Then
 MsgBox ("えらー ")
 Else
End If

End Sub

【66643】Re:C列の値が13だとエラーになるマクロ
発言  かみちゃん  - 10/9/18(土) 13:37 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>ワークシートクラスのマクロに、C列の値が13だったら、エラーのメッセージボックスを表示させるマクロを作りたい

以下のような感じでできるのではないでしょうか?
C1:C10セルの範囲をひとつずつチェックしています。

Private Sub Worksheet_Activate()
 Dim c As Range
 
 For Each c In Range("C1:C10")
  If c.Value <> "13" Then
   MsgBox ("えらー" & c.Address)
  End If
 Next
End Sub

> C列、D列にLEN関数を入れ、桁数を表示しています。
> A列のデータが13桁、B列のデータが10桁です。

であれば、C列を使わなくても、A列のの文字数をチェックすればいいと思います。

【66644】Re:C列の値が13だとエラーになるマクロ
お礼  RIE  - 10/9/18(土) 14:09 -

引用なし
パスワード
   ▼かみちゃん さん:
かみちゃんさん、こんにちは!
下記どうもありがとう御座います。

教えて頂いた内容で少し考えてやって見ます。
だめだったら、また掲示板に書き込みをして、ご教示いただきたいです。

【66645】Re:C列の値が13だとエラーになるマクロ
発言  teian  - 10/9/18(土) 18:29 -

引用なし
パスワード
   >C列の値が13だったら、エラーのメッセージボックスを表示させるマクロを作りたいのですが、
13が一つでもあったらエラーにしたいのでしょうか?
ご提示の動かないコードから想定するに、
C列にひとつでも13以外のセルがあったらエラー表示したいってことのように感じますが
いづれにしても、ループしなくても

  Dim r As Range
  Set r = Range("C:C")
  With Application.WorksheetFunction
    If .Count(r) <> .CountIf(r, 13) Then
      MsgBox "エラー"
    End If
  End With

とかで良さそうです。

エラーのセルを認識したのであれば、別ですが。

【66646】Re:C列の値が13だとエラーになるマクロ
発言  SS  - 10/9/18(土) 18:55 -

引用なし
パスワード
   ▼RIE さん:

質問に対する回答ではないのですがバーコードをスキャンした値とあるので
逐次端末で読み取っていると思うのですが、この読み取った数値をEXCELに
記述するところでチェックするのが良いのではないでしょうか?そうすれば
範囲とか気にしなくて良い(覚えたほうが便利ですけどね)ですし、一通り
読み取った後に修正とかしなくて済むと思います。
読み取り側が改造できないというのでしたら、保存側のシートに以下のコード
を組み込めばどうでしょうか。
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 3 Then
    If Len(Target.Value) = 13 Then
      MsgBox "13桁だよ"
    End If
  End If
End Sub

>いつも勉強させていただいています。
>わたしはマクロを覚えたての初心者です。
>
>A列、B列に異なる情報のバーコードをスキャンした値が入っていって、C列、D列にLEN関数を入れ、桁数を表示しています。
>A列、B列のデータにテレコが起きないようにです。
>A列のデータが13桁、B列のデータが10桁です。
>
>ワークシートクラスのマクロに、C列の値が13だったら、エラーのメッセージボックスを表示させるマクロを作りたいのですが、ご教示できませんでしょうか。
>
>現在、わたしの知識を動員し下記のように書いて、作動しません。
>
>有識者の方、ご返答お願いできますでしょうか。
>
>
>Private Sub Worksheet_ACTIVE()
>
>Dim x As String
>x = Range("C:C")
>If x <> "13" Then
> MsgBox ("えらー ")
> Else
>End If
>
>End Sub

2669 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free