文字列を新規記入時に「vbCrLf」を使って改行させています。
逆に既存の文字列を一括変更させるプログラムを組みたいのですが、
取得した文字列に改行コードがあるかないかを判断させたいのです。
どうすればよろしいでしょうか。
Instr関数なんでしょうか。?
教えて下さい。
>Instr関数なんでしょうか。?
です。
使用例はヘルプ(MSDN)を見てください。
コード中の『InStr』の部分を選択して[F1]キーで表示されます。
早速の御回答ありがとうございます。
改行文字の場合は・・・というプログラムとして以下のコードを記述しました。
If InStr(text, Asc(vbCrLf)) <> 0 Then ・・・・・
上記のコードでうまくいかないのですが、何がおかしいのでしょうか。
If InStr(text, chr(13)) <> 0 Then ・・・・・
でできました。ありがとうございました。
>If InStr(text, chr(13)) <> 0 Then ・・・・・
>でできました。
違います。
chr(13)は vbCr です。
vbCrLf は Chr(13) + Chr(10) です。
以下、ヘルプより抜粋。
>InStr 関数
>構文
> InStr([start, ]string1, string2[, compare])
>
>string2 必ず指定します。引数 string1 内で検索する『文字列式』を指定します。
>Asc 関数
>『整数型 (Integer)』 の値を返します。指定した文字列内にある先頭の文字の
>文字コードを返す変換関数です。
例えば、『お』を探す場合、
Dim strEx As String
strEx = "あいうえ" & "お" & "かきく"
Debug.Print InStr(strEx , "お")
であって
Debug.Print InStr(strEx , Asc("お"))
ではありません。
改行コードも、特殊ではありますが、文字列と同じような存在です。
Dim strEx As String
strEx = "あいうえ" & vbCrLf & "かきく"
Debug.Print InStr(strEx, vbCrLf)
となります。
ちなみに
Debug.Print Asc(vbCrLf)
は
>13
と出力されますので、
>If InStr(text, Asc(vbCrLf)) <> 0 Then ・・・・・
は
If InStr(text, "13") <> 0 Then ・・・・・
と同じ意味となります。
サンプルコード
[VB6.0]
Private Sub Command1_Click()
Dim strEx As String
strEx = "あいう" & Chr(13)
Call Hantei(strEx, Chr(13))
Call Hantei(strEx, vbCr)
Call Hantei(strEx, vbCrLf)
strEx = "あいう" & vbCrLf
Call Hantei(strEx, vbCr)
Call Hantei(strEx, vbLf)
Call Hantei(strEx, vbCrLf)
End Sub
Private Sub Hantei(ByVal String1 As String, ByVal String2 As String)
Dim lngIndex As Long
lngIndex = InStr(String1, String2)
If lngIndex = 0 Then
Debug.Print "見つからない。。。"
Else
Debug.Print CStr(lngIndex) & " 番目に見つけた!"
End If
End Sub
ツイート | ![]() |