[[20100826152521]] 『置換マクロがエラーになってしまう』(K) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『置換マクロがエラーになってしまう』(K)

 初めて質問します。よろしくお願いします。

 [エクセルのバージョン]Excel2003

 [OSのバージョン]WindowsXP

 ―――
 ★やりたいこと★

 A列の英単語の中で、
 「a」で始まるものの後尾に
 「_start」をつけたい。

 たとえば

 apple
 orange
 red
 yellow
 ant
 black

 というA列の場合、

 「apple」「ant」のみ「apple_start」「ant_start」に置換したい。

 ―――
 ★自分でやってみたこと★

 「マクロの記録」を使って、マクロを作成。
 編集画面で中身を見てみると、下記のように書かれている。

    Range("A1:A50").Select
    Application.ReplaceFormat.NumberFormat = "@""_gai"""
    Selection.Replace What:="a*", Replacement:="", LookAt:=xlWhole, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=True

 ―――
 ★結果★

 作ったマクロを使おうとすると

 「実行時エラー`-2147417848(80010108)`:

  `NumberFormat`メソッドは失敗しました:`CellFormat`オブジェクト」

 というエラーメッセージが出る。

 デバックを調べると

 「Application.ReplaceFormat.NumberFormat = "@""_gai"""」

 の部分が黄色くなっている。

 ―――
 ★

 どうしたらよいでしょうか。。。
 よろしくお願い致します。


  提示されたコードと、
 >「apple」「ant」のみ「apple_start」「ant_start」に置換したい。
 の内容があっていないようですが。

 apple を完全一致で、apple_start に置き換える。
 ant を完全一致で、ant_start に置き換える。

 と2回やる必要がありますね。
 もう1度マクロ記録をしてみらどうでしょうか。

 >Application.ReplaceFormat.NumberFormat = "@""_gai"""」
 表示形式の設定が必要なのかわかりませんが、いらないのでは?
 BJ

 例示されたものの中では「apple」「ant」のみ ということでは?
 こんな感じではどうでしょう?・・・といっても使いまわしですが・・・(Hatch)
Sub test3()
    Dim x, i As Long
    x = Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row).Value
    For i = LBound(x) To UBound(x)
        If Left(x(i, 1), 1) = "a" Then
            x(i, 1) = x(i, 1) + "_start"
        End If
    Next i
    Range("A1").Resize(UBound(x), UBound(x, 2)).Value = x
End Sub


 >例示されたものの中では「apple」「ant」のみ ということでは?
 あ、そう書いてありますね。
 >「a」で始まるものの後尾に
 これが見えてなかった。
 すみません。
 BJ


BJ様、Hatch様

早々にヘルプいただいて、ありがとうございます!!!

そして・・・すみません。

先程の質問欄に、間違ったマクロを貼り付けていました。

「_gai」ではなく「_start」です。

なので、作ったマクロが

    Range("A1:A50").Select
    Application.ReplaceFormat.NumberFormat = "@""_start"""
    Selection.Replace What:="a*", Replacement:="", LookAt:=xlWhole, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=True

デバックを調べると

 「Application.ReplaceFormat.NumberFormat = "@""_start"""」

 の部分が黄色くなっています。


ただ、Hatchさんが載せてくださったマクロで成功しました!!!

VBAは素人で、わからなさすぎて困ってました。

すっきり解決です。

お二人、本当にありがとうございます。

また、何かあったら・・・よろしくお願いします!!

(K)


 解決したようですが・・・、
 >デバックを調べると
 >「Application.ReplaceFormat.NumberFormat = "@""_start"""」
 >の部分が黄色くなっています。

 @"_start" このユーザー定義の書式を予め登録しておかないと駄目みたいですね!!

 新規ブックにて試してみてください。

 標準モジュールに

 '==============================================================
 Option Explicit
 Sub sample1()
    With Range("a1:a6")
       .Value = [{"apple";"orange";"red";"yellow";"ant";"black"}]
       MsgBox "このセルA1:A6のデータが、サンプルです"
       With .Parent.Parent
           .Styles("Normal").NumberFormat = "@""_start"""
           .Styles("Normal").NumberFormat = "General"
       End With
       MsgBox "@""_stsart""  というユーザー定義の書式を登録しました" & vbCrLf & _
              "これから置換処理を実行します"
       Application.ReplaceFormat.Clear
       Application.ReplaceFormat.NumberFormat = "@""_start"""
       .Replace What:="a*", Replacement:="", LookAt:=xlWhole, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=True
    End With
 End Sub

 sample1を実行して見てください。今度は、

 apple と ant は、apple_start、ant_startと表示されているはずです。

 但し、これは書式でそのように見えているだけで実際の値は、
 apple と ant のままですけど・・・・。

 エラーの原因は以上です。

 ichinose


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.