検索と置換
ここに載せてあるソースコードは、参考のために載せてあります
サンプルコードは、一番下に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 |