検索と置換

<戻る

ここに載せてあるソースコードは、参考のために載せてあります

サンプルコードは、一番下にLZHとしてあります




Option Explicit

'置換ボタンをクリックしました
Private Sub cmdReplace_Click()
    
    'テキストボックスが選択中でない場合は、実行しません
    If frmMain.txtText.SelLength > 0 Then
        Dim lngPos As Long
        Dim strText1 As String
        Dim strText2 As String
        
        '置換処理をします
        lngPos = frmMain.txtText.SelStart
        strText1 = Mid(frmMain.txtText, 1, frmMain.txtText.SelStart)
        strText2 = Mid(frmMain.txtText, frmMain.txtText.SelStart + Len(txtSearch.Text) + 1)
        frmMain.txtText = strText1 & txtReplace & strText2
        
        '選択範囲を更新します
        frmMain.txtText.SelStart = lngPos
        frmMain.txtText.SelLength = Len(txtReplace.Text)
        
        '2度、置換を実行しないように置換ボタンを無効にします
        cmdReplace.Enabled = False
    End If
End Sub

'検索ボタンをクリックしました
Private Sub cmdSearch_Click()
    CommonSearch
End Sub

'次を検索ボタンをクリックしました
Private Sub cmdNextSearch_Click()
    CommonSearch True
End Sub

'検索ボタンと次を検索の共用関数です
Sub CommonSearch(Optional ByVal bNext As Boolean)
    Dim lngSeek As Long
    
    '検索する文字列が設定されていない場合は
    'メッセージボックスで知らせます
    If txtSearch.Text = "" Then
        MsgBox """検索する文字列""が設定されていません", vbExclamation
        Exit Sub
    End If
    
    If bNext = False Then
        'テキストボックスの一番最初から指定の文字列を検索します
        lngSeek = InStr(1, frmMain.txtText.Text, txtSearch.Text)
    Else
        'テキストボックスのカーソルの位置から指定の文字列を検索します
        lngSeek = InStr(frmMain.txtText.SelStart + frmMain.txtText.SelLength + 1, frmMain.txtText.Text, txtSearch.Text)
    End If
    
    '検索結果を判断します
    If lngSeek <= 0 Then
        'テキストボックスの最後まで検索し終えた
        'というメッセージボックスを表示します
        MsgBox "検索は終了しました", vbInformation
    Else
        'テキストボックスの選択位置を更新します
        frmMain.txtText.SelStart = lngSeek - 1
        frmMain.txtText.SelLength = Len(txtSearch.Text)
        '置換ボタンを使用可能にします
        cmdReplace.Enabled = True
    End If
End Sub

'フォームをロードします
Private Sub Form_Load()
    '初期設定です
    cmdReplace.Enabled = False
End Sub

'閉じるボタンをクリックしました
Private Sub Form_Unload(Cancel As Integer)
    'このウィンドウが表示されていれば
    'このウィンドウをアンロードせずに非表示にします
    If Me.Visible = True Then
        Cancel = 1
        Me.Hide
    End If
End Sub


<戻る

Sample67.lzh


http://hp.vector.co.jp/authors/VA015521/