- ベストアンサー
エクセルマクロ セル内の値の抜き出しと入力の値とのマッチングについて
- エクセルでマクロを作成していますが、セル内の値を抜き出して入力した値とマッチングする方法がわかりません。
- A2セル内の値が空になってしまい、マッチングがうまく行かない問題が発生しています。
- どのようにすればA2セル内の値を保持したまま、値とのマッチングができるのでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
どういう状態で、何をしたいのかはっきり質問異、文章で書くこと。初心者の場合、意図していることとコードが食い違い、したいことがはっきり判らないことが多いので。 例えば下記のように書く。 シートかフォームに、テキストボックス1つと、コマンドボタンを1つ設ける。 テキストボックスに4桁の数字文字列を入れる。 そしてコマンドボタンをクリックする テキストボックスに値がないときは何もしないで終わる。 最終行までA列の値の12桁から4桁について考えて、テキストボックスで指定した値と等しいなら、その行を削除 といったところか。 「はまっている」とは、熱中していて、上達しているのではないのカナ。質問のコードはむちゃくちゃ。 ーー 例として Private Sub CommandButton1_Click() If TextBox1.Value = "" Then Exit Sub d = Range("a65536").End(xlUp).Row MsgBox d fnd = "n" For i = d To 2 Step -1 If Mid(Cells(i, "A"), 11, 4) = TextBox1.Text Then MsgBox i & "行で見つかりました" Rows(i).EntireRow.Delete fnd = "y" Else End If Next i If fnd = "n" Then MsgBox "見つかりません" End Sub 例データ A列 A2以下 111-22222-5554-666-1 111-22222-5555-666-2 111-22222-5557-666-3 111-22222-5558-666-4 111-22222-5555-666-5 111-22222-5559-666-6 111-22222-5560-666-7 結果 111-22222-5554-666-1 111-22222-5557-666-3 111-22222-5558-666-4 111-22222-5559-666-6 111-22222-5560-666-7 ーー 簡単に済ますなら下の方の行から上に判別して行った方がやさしい。
お礼
imogasiさま。 すばやいご回答ありがとうございました。
補足
imogashiさま、ご指摘とご回答ありがとうございます。今読み返してみると全く日本語になっていませんでした。お恥ずかしい限りです。もともと文章は得意ではないのですが、ひどかったですね、申し訳ありません。 やりたい処理というのは、 まず前提として、セルA列の2行目から下にズラッと数字が入力されています。 235-545-654 244-666-212 536-322-150 . . という具合です。 実行ボタンでテキストボックスを表示させ数字を入力します。(例えば 666) その数字とセルA2の4つ目から3ケタの数字とをマッチングさせて異なる数字の時はA2セルを削除して 全体を上に移動。同じ数字なった時(この場合666です)に処理が終了する。つまり上記の場合は 結果は 244-666-212 536-322-150 . . といった具合です。 いかがでしょう?少しはわかりやすくなりましたか? ネットで検索するとMid関数を使う例がいくつか示されていたので 試してみたのですがだめでした。文字全部を入力(244-666-212)してrange("A2")と比較させると うまくいくのですが・・・。 わかりにくい、というか支離滅裂な質問ですみませんでした。