[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『置換マクロがエラーになってしまう』(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
早々にヘルプいただいて、ありがとうございます!!!
そして・・・すみません。
先程の質問欄に、間違ったマクロを貼り付けていました。
「_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"""」
の部分が黄色くなっています。
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.