Excel VBA質問箱 IV

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

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


72289 / 76738 ←次へ | 前へ→

【8933】Re:バッティング
発言  つん E-MAIL  - 03/11/10(月) 14:57 -

引用なし
パスワード
   どもども

>これでは、無限ループに突入してします、
>どうしたらいいでしょうか?

無限ループにはならないと思うけど……

 Target.Value = ""

ここを通ったとき、確かにもう一度Changeイベントが発生したりはしますね。

 For Each セル In MyR 

の途中でまたChangeイベントが発生するのって、どうかな?と思うので、
こうしたらどうでしょうか?

Private Sub Worksheet_Change(ByVal Target As Range)

Dim MyR As Range
Dim セル As Range
Dim blnFlag As Boolean

  blnFlag = False

  If Target.Value <> "" Then

    Set MyR = Columns("A:A").SpecialCells(xlCellTypeConstants, 23)
    For Each セル In MyR
      If (Target.Value = セル.Value) And (Target.Row <> セル.Row) Then
        Cells(Target.Row, Target.Column).Select
        MsgBox Target.Value & "は、入力済みです"
        blnFlag = True
        Exit For
      End If
    Next
  
    Set MyR = Nothing
    Set セル = Nothing
  End If
  
  If blnFlag = True Then Target.Value = ""

End Sub

一度ステップ実行して動きを確かめて見てください。

ところで、バッティングときに、A列の行と同行の時はOKなわけなんですね?

0 hits

【8929】バッティング 学生です 03/11/10(月) 11:53 質問
【8930】Re:バッティング つん 03/11/10(月) 12:50 回答
【8932】Re:バッティング 学生です 03/11/10(月) 14:28 質問
【8933】Re:バッティング つん 03/11/10(月) 14:57 発言
【8935】Re:バッティング 学生です 03/11/10(月) 15:00 回答
【8957】Re:バッティング りん 03/11/11(火) 20:00 回答

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