• ベストアンサー

VBでの表現

Perlでは以下のような正規表現をしたいのですが if($TextBox !~ /[a-zA-z0-9]){ ~~~ } VBではどのように正規表現をするのでしょうか よろしくお願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

VB6やVBAでは Microsoft VBScript Regular Expressions 5.5 参照設定が必要なようです。VB6でも http://support.microsoft.com/kb/818802/ja VBAで http://codezine.jp/article/detail/1655 ーーー Sub test01() 'Microsoft VBScript Regular Expressions 5.5 参照設定 Dim regEx As Object Set fso = CreateObject("Scripting.FileSystemObject") Set regEx = New RegExp Str1 = Worksheets("Sheet1").TextBox1.Text regEx.Pattern = "[a-zA-Z0-9]" regEx.Global = True If regEx.Test(Str1) Then MsgBox Str1 & " には半角英数字があります" Else MsgBox Str1 & " には半角英数字はありません" End If End Sub ーー ただし、参照設定はしない場合は Sub test02() 'Microsoft VBScript Regular Expressions 5.5 参照設定はしない Dim regEx As Object Set regEx = CreateObject("VBScript.RegExp") Str1 = Worksheets("Sheet1").TextBox1.Text regEx.Pattern = "[a-zA-Z0-9]" regEx.Global = True If regEx.Test(Str1) Then MsgBox Str1 & " には半角英数字があります" Else MsgBox Str1 & " には半角英数字はありません" End If End Sub ーー エクセルVBAでやったので、 Worksheets("Sheet1").TextBox1 となってますがVBの場合はWorksheets("Sheet1").を取ってしまってください。 ==== VB。NET系では http://park5.wakwak.com/~weblab/tipsSeikiHyogen5.html Public Class Form1の前に Imports System.Text.RegularExpressions ーー フォームにtextbox1とコマンドボタンCommandButton6(私の場合たまたまこうなっただけ)を設け Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click '前後の空白除去 Me.TextBox1.Text = Trim(Me.TextBox1.Text) '郵便番号チェック If Regex.IsMatch(Me.TextBox1.Text, "^[0-9]{3}[\-]?[0-9]{4}$") Then MsgBox(Me.TextBox1.Text + " が入力されました") Else '入力エラー MessageBox.Show _ ("9999999または999-9999の形式で入力してください", "入力エラー") End If Me.TextBox1.Focus() End Sub をPublic Class Form1と End Class の間に入れる。 ーー 一応簡単なテスト済みです。 ーー ややこしいことです。

taporu
質問者

お礼

すいません、自己解決しました 今後参考にさていただきます ありがとうございました

その他の回答 (1)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

VBにもVB6/VBA/VBS系とVB.NET系があります。 メソッド名や使い方が違いますが、正規表現自体は同じです。 【VB6系】 Dim RegExp Set RegExp = CreateObject("VBScript.RegExp") RegExp.Pattern = "[a-zA-Z\d]" If Not RegExp.Text(TextBox.Text) Then 【VB.NET系】 Imports System.Text.RegularExpressions If Not Regex.IsMatch(TextBox.Text, "[a-zA-Z\d]") Then

taporu
質問者

お礼

すいません、自己解決しました 今後参考にさていただきます ありがとうございました

関連するQ&A