社長、社員、バイトさん、派遣さんが入り交じっての交換日記?or 愚痴日記?
Visual Basic で壁にぶち当たりまくってます。
ただいまの壁は、“もし、○○という文字が含まれる文字列ならば・・・” って、
どう表現すればいいのかなぁ~というものです。
ふつうに、 *○○* では上手くいきません。
(ちなみに、今回検索したい文字が * なので、部分一致にすると *** になって、
なんだか訳のわからないものになってしまいます。)
そもそも、プログラムに、ワイルドカードなんて概念が存在するんでしょうか?????
ついでに言うと、前から思ってたんですが、
例えばCADやEXCELなんかで、 * とか ? とかって入力された文字を検索したいのに、
すべての文字がヒットしちゃって、扱いに困ることがあるんですが・・・。私だけでしょうか?
EXCELでは、ワイルドカードの前に ~ (チルダ)を入力すればOK!とたった今知ったので、(遅っ!)
CADでもやってみました。 ~* 検索!! ・・・だめでした。
なにか良い方法はあるんでしょうか?????
あぁ、またもや、脳がクラッシュ寸前です。
頭冷やしに行ってきマイケル
この記事にコメントする
無題
タイトル見ただけでメージャーリーグのプレーオフ
を思い浮かべたわたくしは野球バカですかそうですか(ノ∀`)
VBかぁ・・・昔少しやってすぐに挫折した輝かしい思い出が(どこが
LIKEって演算子は関係ないのかな・・・
知ったかです。
を思い浮かべたわたくしは野球バカですかそうですか(ノ∀`)
VBかぁ・・・昔少しやってすぐに挫折した輝かしい思い出が(どこが
LIKEって演算子は関係ないのかな・・・
知ったかです。
文字検索
Sub MojiKensaku()
Dim Moji1 As String
Dim Moji2 As String
Dim Moji3 As String
Dim MojiSuu1 As Integer
Dim MojiSuu2 As Integer
Dim Flag As Boolean
Dim i As Integer
Moji1 = "123456789"
Moji2 = "45"
MojiSuu1 = Len(Moji1)
MojiSuu2 = Len(Moji2)
Flag = False
For i = 1 To MojiSuu1 - MojiSuu2 + 1
Moji3 = Mid(Moji1, i, MojiSuu2)
If Moji2 = Moji3 Then
Flag = True
Exit For
End If
Next
End Sub
こうだ!
Moji1の文字を左から順番にMoji2があるかどうかを検索させています。
この例で行くとiが1の時Moji3は"12",2の時"23"となっていって、iが4の時にMoji3が"45"。
Moji2 = Moji3となって「有る」という事が分かります。
ミソは文字数を取得するLen関数、文字の左から何番目の何文字分かを取得するMid関数。
このサブルーチンにMoji1,Moji2,Flagを渡してやればいいんじゃない?
Dim Moji1 As String
Dim Moji2 As String
Dim Moji3 As String
Dim MojiSuu1 As Integer
Dim MojiSuu2 As Integer
Dim Flag As Boolean
Dim i As Integer
Moji1 = "123456789"
Moji2 = "45"
MojiSuu1 = Len(Moji1)
MojiSuu2 = Len(Moji2)
Flag = False
For i = 1 To MojiSuu1 - MojiSuu2 + 1
Moji3 = Mid(Moji1, i, MojiSuu2)
If Moji2 = Moji3 Then
Flag = True
Exit For
End If
Next
End Sub
こうだ!
Moji1の文字を左から順番にMoji2があるかどうかを検索させています。
この例で行くとiが1の時Moji3は"12",2の時"23"となっていって、iが4の時にMoji3が"45"。
Moji2 = Moji3となって「有る」という事が分かります。
ミソは文字数を取得するLen関数、文字の左から何番目の何文字分かを取得するMid関数。
このサブルーチンにMoji1,Moji2,Flagを渡してやればいいんじゃない?