VBAについて質問です。


VBAである文字列を含んでいるものを削除するやり方を教えていただけないでしょうか?

例えば、列Cにあいうえおを含む文字列を含んだものがあればその行を削除する。

例)列C1にあいうえおかきくけこ というデータがある場合 マクロ実行後1行目が全て削除されます。
例)列C2にあいうえお というデータがある場合 マクロ実行後2行目が全て削除されます。

お手数をおかけしますがわかるかたおりましたら型を書いていただければと思います。
よろしくお願いいたします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/12/18 00:32:18
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:Mook No.1

回答回数1314ベストアンサー獲得回数393

ポイント100pt

文字列を含んでいる判定は InStr を使用します。


文字を含んでいればその位置を、含んでいなければ 0 を返しますので、

数値が0かそうでないかで、文字を含んでいるかどうかを判定します。


Sub DeleteC()
    Dim lastRow As Long
    lastRow = Range("C" & Rows.Count).End(xlUp).Row
    For r = lastRow To 1 Step -1
        If InStr( Cells(r, "C").Value,"あいうえお" ) > 0 Then
            Rows(r).Delete
        End If
    Next
End Sub
id:aiomock

ご回答ありがとうございます。実行出来ました。

2009/12/18 00:32:00
  • id:airplant
    IEと連携されたプログラムを開発中のようですね。
    はてなで聞くのも一つの手ですが、VBAの本を一冊購入して一通り眺めてみるのがいいと思います。
    今の方法ですと、新しくやりたいことが出たり、少しだけ違う動作にしたいときに、毎回はてなで聞くことになってしまうからです。
    まあ、はてなや回答者に取ってはいいことかも知れませんが・・・

    ご自身での自由がきかなくなるので、一度体系立った本を見てみることをお勧めいたします。
    本屋さんに行けば鬼のようにあります(今までの支払ポイントより安いと思います)。

    その上で、この関数が無さそうだとか、こうやったがうまくいかなかったと質問されてはいかがでしょう。

    あ、ちょっとあちこちからブーイングが来そうで怖い。
  • id:Mook
    airplant さんのご意見にはまったく同意です。
    が、本やネットで調べるよりネットで聞く方が簡単だと認識されているようですね。

    以前のPHPやVBAでの回答でも、何度か書籍やネットによる体系的な学習をお勧めしたの
    ですが、残念ながらその有効性をご理解いただけなかったようです。

    ただ、万人がプログラミングを簡単に習得できるわけでもないでしょうし、検索が苦手
    な方もいらっしゃるでしょうから、必要なことだけを(ネットで)人に聞くというのも、
    場合によっては一つのやり方なのかもしれません。

    職業プログラマであれば、自己解決能力は必須ではありますが。
  • id:aiomock
    ご指摘ありがとうございます。

    確かに土台がない上で進めており、
    今までのツール作成は、外からの情報(ほぼはてな)で作成していっていますので、非常にもろいプログラム体制です。

    作成したいツールが浮かんで来ては、どうしても先に作りたいというのが出てしまって、
    考えた流れとそれに沿った回答を得たくてついつい質問をしてしまいます。

    質問を多用するのは、
    自分には、情報をすぐ見つける能力と論理的に組み立てていくセンスがないと思ったことが原因で、割り切って質問していました。
    しかし、ご指摘を頂いてやはり最終的にプログラムをきちんと身につけたいという割り切れないところがやはりあります。

    頂いた回答をどれだけ吸収できるか、応用できるかという点に焦点を絞ってやっていたのですが、
    最近は目的を達成する事にかなり焦点が絞られていました。。

    将来的にプログラムを使いこなしたいのであれば今のスタイルはやはり自分でも違うと思います。

    ご指摘いただいた通りに、外を頼りにしてしまう、限りある条件の中でしか出来ないというのは非常に弱さを感じる所です。
    軸を内に添えてやるということは何をやるにしても大事なことだと思いますし、そうしないと最終的にはうまくいかないとやはり思います。

    言語のベースを確立したうえではてなの情報をきっかけとして活用していくのは、自分にとっても非常に理想のスタイルです。

    しかし、そのやり方をなかなか決意できない弱さが出ているのが今の現状です。。

    もう少し考えてみます。。

  • id:Mook
    >自分には、情報をすぐ見つける能力と論理的に組み立てていくセンスがないと思ったことが原因で、
    >割り切って質問していました。

    であれば、はてなはそれを実現できる場ですからそれも一法だと思います。


    プログラムの習得は、PHP であれば
      print "Hello World"
    VBA であれば
      MsgBox "Hello World"
    から始めるのが正当な方法というものです(冗談ですが)。

    ですが、このような簡単なものから開始し、いろいろな処理を試行錯誤しながら習得するという事が
    苦にならない(どちらかというと楽しい)というのが、プログラム習得のための必要資質だと思います。

    このような試行錯誤が苦痛でしょうがないのであれば、現状の利用方法もありかもしれません。
  • id:aiomock
    ご回答ありがとうございます。

    Mookさんのコメントのお陰で
    プログラマの人たちが何に意識・価値を置いてやっているのか?というのがわかりました。

    いろいろな処理を試行錯誤しながら習得するという事が
    苦にならない(どちらかというと楽しい)

    そこに価値を置ける人がプログラマーとして食べていくことだと思い、
    そこに意識を多く向けられる人が優れたプログラマーになれるのだと思いました。

    現在の自分ですと意識が違う方向に向いており、プログラムを1からやるのは現状では多分出来ないと思います。

    先日は質問を連発してしまいましたが、自分が作成したいと思っていたツールの土台が幾つか出来あがりました。
    今までとは比較にならないくらい、急ピッチでした。

    ツールを作成する中でプログラムが出来るようになればいいという考えを持っていましたが、
    そういう考え方はプログラマの方にとって大変失礼な事だと今回思いました。

    今後は自分の目的をより絞り込んで
    そこに意識をより集中できるように持っていきたいと思います。

    現状路線でいくことになりますが、

    新しい言語に取り掛かる時は、とりあえずベースを掴む。(基本の事が書いてある本を読む)
    質問する前によく考えて質問をする

    という事を前段階で心がけて行えたらと思います。
  • id:Mook
    ちょっと誤解の無いように補足だけしたいと思いますが、プログラマは言語を習得することが
    目標でもありませんし、それが重要なのではありません。

    英語を使ってビジネスするのに、単語や文法だけ覚えればいいわけではありませんよね。
    英語を使って何を話すのか、どのように交渉するのかの方がよほど重要です。
    場合によっては通訳を使ってもよいわけですから。

    これはソフト(プログラム)の外部仕様を作って、外注することに相当するでしょうか。
    これもまた、一つのやり方です。

    言語の習得はプログラミングをするための基礎技術です。
    プログラミングをするというのは、その上で問題解決のための
     ・設計(これが重要!)
     ・実現(コーディング)
     ・検証(意外と重要)
    をすることです。

    VBA を個人で使う場合など、素人プログラマは上記の実現(コーディング)が
    プログラミングだと思っているケースも多く、それはそれで有用な場面もあり
    ますが、それでプログラマになれるわけではありません。

    すぐれたプログラムは性能だけでなく、保守性、信頼性、拡張性を考慮した設計も
    重要です。
    まぁ、ユーザからみたら「ちゃんと動きゃいい」のかもしれませんが。
  • id:aiomock
    設計が重要という事は、
    プログラムに関する様々な知識、経験が非常に重要ということでしょうか。

    仕事の依頼(仕様書)から、依頼主の要求にあった最適な設計を考える。
    依頼主の要求から自分の知識、経験をフルに使用して、保守性、信頼性、拡張性のバランスの取れた設計を行うということが大切な気がします。


    言語習得は基礎であること、設計が重要だという事、非常に勉強になりました。
    ありがとうございます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません