• ベストアンサー

ExcelのVBAでアクティブシートの特定の文字列の入ったセルを全て選

ExcelのVBAでアクティブシートの特定の文字列の入ったセルを全て選択し、文字をクリアしたいのですが、構文を教えて下さい。ちなみに、文字列というのは『jpg』です。 挿入した画像を一括削除する場合は、ActiveSheet.Shapes.SelectAll で全て選択できたのですが、文字列だとよくわかりませんでした。 Find("jpg")でやってみると最初の『jpg』だけが選択されてシート内の全てを選択できないので、全て選択・クリアできる方法を探しています。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんばんは! すでに色々方法は出ていますので、参考程度で・・・ Sub test() Dim i, j As Long For i = 1 To ActiveSheet.UsedRange.Rows.Count For j = 1 To ActiveSheet.UsedRange.Columns.Count Cells(i, j) = Replace(Cells(i, j), "jpg", "") Next j Next i End Sub

trs00225
質問者

お礼

ありがとうございます。 お礼がかなり遅れてしまい申し訳ないです。 試してみましたが、成功しました。 この方法はなんとなくマクロ初心者の私でも少し理解できそうな構文なので これを使用させて頂くことにしました。 本当にありがとうございました。

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

>ActiveSheet.Shapes.SelectAll これに匹敵すするコードは、 On Error Resume Next ActiveSheet.Cells.SpecialCells(xlCellTypeConstants, xlTextValues).ClearContents On Error GoTo 0 Find メソッドを使うなら、こうなります。 Sub MacroTest1() Dim c As Range  Set c = ActiveSheet.Cells.Find(What:="*jpg", LookIn:=xlValues)    If Not c Is Nothing Then     Application.ScreenUpdating = False     Do     Set c = ActiveSheet.Cells.FindNext(c)     If c Is Nothing Then Exit Sub     c.ClearContents 'ここで処理     Loop     Application.ScreenUpdating = True    End If End Sub

trs00225
質問者

お礼

かなりお礼が遅くなってしまいました。 いろいろな方法があるのですね。 教えて頂きありがとうございます。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

一例です。 Sub 一例() Cells.Replace What:="*jpg", Replacement:="", LookAt:=xlPart End Sub

trs00225
質問者

お礼

お礼がかなり遅れてしまい申し訳ないです。 教えて頂き本当にありがとうございました。

  • hoiho1010
  • ベストアンサー率11% (13/113)
回答No.1

For Each c In 希望するセル範囲 string1 = c.Text string2 = ".jpg" n = InStr(1, string1, string2, vbTextCompare) If n <> 0 Then C.Value="" End If Next

trs00225
質問者

お礼

かなり遅くなってしまいました。本当に申し訳ありません。 教えて頂きありがとうございました。

関連するQ&A

  • VBAでワークシートの図形をすべて選択したい!

    VBAのヘルプでは Set myDocument = Worksheets(1) myDocument.Shapes.SelectAll Set sr = Selection.ShapeRange と書いてありましたが、メモリ不足で処理できません。 何か良い方法ないでしょうか? 最終的にワークシート上の図形をすべて削除したいのです。VBAではどうするのか教えてください! EXCEL2000です。

  • VBA でセルの文字列に"-"等の文字を挿入したい

    VBA でセルの文字列に"-"等の文字を挿入したい エクセルでA列に品番がずらっと並んでいる状態です。 この品番がすべて"-"が抜けています。 頭から5文字目の後ろに"-"を挿入したいのですがどのようにすればよいでしょうか? 例 55548855→55548-55 また 55548-55→55548855 のように"-"を抜く方もわかれば教えてください。 よろしくお願いします。

  • エクセル VBA 特定の文字列

    エクセル VBA 特定の文字列 A列に、様々な文字列があるとします。 そのうち、りんごと書かれている行のみを別シートに書き出すマクロを教えてください。 お願い致します。

  • VBAで、エクセルワークシート上の図を選択・削除したい

    VBAで、ワークシート上の図をすべて選択して削除するのは、どのように書いたら良いでしょうか?実際の図は一つなのですが、オートマクロで記述すると、 ActiveSheet.Shapes.Range(Array("Picture 3").Select のように、番号が変わってしまいます。

  • エクセルVBAで文字列変換

    エクセル2010でVBAを書いています。 シートの中のセルを全ての書式を文字列に変換するのはどうすればよいでしょうか。 ボタンをクリックした時にシート内のセルが全て文字列型に変換するという動きにしたいです。 解決法などありますでしょうか。 よろしくお願いします。

  • Excel VBAで、B列の幅を、既存のグラフの幅に設定したい。

    VBA初心者です。 ワークシート上にグラフを作成した後(例えば「グラフ1」とします)、B列の幅を作成したグラフの幅と同じに設定するには、どのように記述すればよいのしょうか? Columns("B").ColumnWidth = ActiveSheet.Shapes("グラフ1").Width Columns("B").Width = ActiveSheet.Shapes("グラフ1").Width Columns("B").ColumnWidth = ActiveSheet.Shapes("グラフ1").ColumnWidth どれもうまくいきませんでした。よろしくお願いします。

  • EXCEL VBAを使ってファイル内にある特定の文字すべてに色をつけたい

    おはようございます。 EXCEL VBAであるひとつのEXCELファイルの中のすべてのシートの特定の文字が入っているセルに色をつけるにはどのようなコードを使えばいいでしょうか? (例)田中 という文字列が入っているセルはすべてブルーの色がつくという感じです。 教えて下さい。 よろしくお願いします。

  • EXCEL VBAでの 文字列検索

    セル内の文字列を部分一致で検索したいのですが、 下記の構文だと、検索対象シートを選択しなくてはならないため、 PGの動きが堅くなってしまいます。何かいい方法をご存知の方、 教えてください。 Selection.Find(What:=key, After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, MatchByte:=False).Activate Cells.FindNext(After:=ActiveCell).Activate

  • エクセルVBAで、ボタンの文字を変えたい

    フォームツールバーから作ったボタン(コントロールツールバーのコマンドボタンではない)の文字列を変えるマクロはどのように書けば良いでしょうか? ActiveSheet.Shapes("古い名前").Caption = "新しい名前" など、いろいろやりましたがエラーになってしまいます。

  • Excel VBA で自在に図形を変化させたい

    Excel VBAを使って図形を自由に変化させたいと思っています。 一つの形の四角形や三角形をVBAを使ってシート上に表記することは出来ます。 私はユーザーインターフェースを作り、テキストボックスに値を入れることで図形を変化させることをしたいと思っています。 例えば、一つの三角形を正三角形にしたり、直角二等辺三角形にしたり、自在に角度を変えてVBAに描かせたいと思っています。 三角形は以下のようにコードを記述しましたらシートに表示できました。 Sub 三角形作成() Set ArwLine = ActiveSheet.Shapes.AddLine(10, 10, 200, 200) Set ArwLine = ActiveSheet.Shapes.AddLine(200, 200, 100, 400) Set ArwLine = ActiveSheet.Shapes.AddLine(100, 400, 10, 10) End Sub これを以下のようにして変数(x、y)にユーザーインターファースから値を代入するようにしたいのですがどのようにすればよいのでしょうか教えてください。 Private Sub CommandButton1_Click() UserForm1.Show End Sub Sub 三角形作成() Set ArwLine = ActiveSheet.Shapes.AddLine(10, 10, 200, 200) Set ArwLine = ActiveSheet.Shapes.AddLine(200, 200, x, y) Set ArwLine = ActiveSheet.Shapes.AddLine(x, y, 10, 10) End Sub 前回、「Excel VBAで図面を書きたい」という質問をしたのですがややこしく書いたため解答される方が居ませんでしたので編集して再質問をさせていただきます。 よろしくお願いします。

専門家に質問してみよう