プロが教えるわが家の防犯対策術!

H列の全てのセルで、セル内改行(Alt+Enter)したら、
"セル内改行禁止"というメッセージボックスを表示させたいのですが、
どのような構文になりますか。

Dim inputdata As Integer
On Error GoTo MSG
inputdata = Worksheets("sheet1").Column("H:H")
if inputdata

ここまで書いてみたのですが、全然自信がありません。
ご存知の方、ご教授お願い致します。

A 回答 (7件)

セル内改行の有無をチェックします。



Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value Like "*" & vbLf & "*" Then
MsgBox "セル内改行あり"
End If
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました。
出来ました!
ここまで出来るよう、勉強します。。。

お礼日時:2008/02/05 10:10

"H列”を見落としてました。


↓でお試しください。

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value Like "*" & vbLf & "*" And Target.Column = 8 Then
MsgBox "H列かつセル内改行あり"
End If
End Sub
    • good
    • 1

シートモジュールに貼り付けてください。



Private Sub Worksheet_Change(ByVal Target As Range)

Dim myrng As Range

For Each myrng In Target
If myrng.Column = 8 Then
If InStr(myrng.Value, Chr(10)) > 0 Then
MsgBox "セル内改行禁止"
End If
End If
Next myrng

End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました。
思い通りの事ができました!

お礼日時:2008/02/05 10:07

ちょっと仕様が変更して、


改行コード Vblfが
当該シートの H列に入力されると エラーメッセージを表示した後に、
改行コードを削除します。

ぐらいの使用にした方が簡単だと思いますが、いかがですか?

これでよいなら、
当該シートのモジュールに
'=======================================================
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim trng As Range
  Dim crng As Range
  Set trng = Application.Intersect(Target, Range("h:h"))
  If Not trng Is Nothing Then
   Application.EnableEvents = False
   For Each crng In trng
     If InStr(crng, vbLf) Then
      MsgBox "改行はできません"
      With crng
       .Value = Replace(crng.Value, vbLf, "")
       End With
      End If
     crng.WrapText = False
     Next
   Application.EnableEvents = True
   End If
End Sub

として、H列に入力して試してみて下さい。
    • good
    • 1
この回答へのお礼

ありがとうございました!
今回は改行を解除せずにメッセージだけ表示したかったのですが、
こちらもとても役に立ちそうです。

お礼日時:2008/02/05 10:05

入力時(コピー&ペースト)ということなら下記で強制的に改行を解除できます。


Private Sub Worksheet_Change(ByVal Target As Range)
For Each RG In Target
If RG.Column = 8 Then
If InStr(1, RG.Value, Chr(10)) > 0 Then
MsgBox "セル" & RG.Address & "に改行を取り消します。", , "改行禁止"
RG.Value = Replace(RG.Value, Chr(10), "")
End If
End If
Next RG
End Sub
    • good
    • 0
この回答へのお礼

出来ました!
今回は改行を解除しないでメッセージだけ表示したかったのですが、
こちらもとても役に立ちそうです。
ありがとうございました。

お礼日時:2008/02/05 09:52

訂正です。



>ぐらいの使用にした方が簡単だと思いますが、いかがですか?
ぐらいの仕様にした方が簡単だと思いますが、いかがですか?
    • good
    • 0

これはVBAでなくても、データー入力規則ーユーザー設定ー =ISERROR(FIND(CHAR(10),A1)) でできることです。

ですから
それをマクロの記録をとったものを下記に挙げておきます。
Sub Macro1()
With Range("A:A").Validation
.Delete
.Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=ISERROR(FIND(CHAR(10),A1))"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = "セル内改行禁止"
.IMEMode = xlIMEModeNoControl
.ShowInput = True
.ShowError = True
End With
End Sub
A列の例ですから、H列なら With Range("H:H").Validation
と変えます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!