Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4592 / 13644 ツリー ←次へ | 前へ→

【55752】Replaceメソッドを使って、9'9を9-9に変換したい tk 08/5/18(日) 16:26 質問[未読]
【55755】Re:Replaceメソッドを使って、9'9を9-9に変... りん 08/5/18(日) 16:52 回答[未読]
【55759】Re:Replaceメソッドを使って、9'9を9-9に変... tk 08/5/18(日) 17:52 お礼[未読]

【55752】Replaceメソッドを使って、9'9を9-9に変...
質問  tk  - 08/5/18(日) 16:26 -

引用なし
パスワード
   Replaceメソッドを使って、9'9を9-9に変換したいのですが、下記コードではうまくできません。
9-9が日付形式に変化して、表示形式をうまくコントロールできないです。

Sub test() '9'9を9-9に変換
  置換 Selection, "'", "-"
End Sub

Sub 置換(MyRange As Range, Str1 As String, Str2 As String)  'Str1 ==> Str2
'9-9が日付形式に変化して、表示形式をうまくコントロールできない
  MyRange.NumberFormatLocal = "@"  '表示形式 文字列
  MyRange.Replace What:=Str1, Replacement:=Str2 _
    , LookAt:=xlPart, SearchOrder:=xlByRows _
    , MatchCase:=False, SearchFormat:=False _
    , ReplaceFormat:=True
    ', ReplaceFormat:=False
End Sub

ヘルプより
ReplaceFormat  省略可能です。バリアント型 (Variant) の値を使用します。
メソッドの置換書式を指定します。
に関係するのかなと思って
ReplaceFormat:=True
にしても9-9が日付形式に変化してしまいます。
Replaceメソッドを使った場合無理なのでしょうか。

【55755】Re:Replaceメソッドを使って、9'9を9-9に...
回答  りん E-MAIL  - 08/5/18(日) 16:52 -

引用なし
パスワード
   tk さん、こんにちわ。

>Replaceメソッドを使って、9'9を9-9に変換したいのですが、下記コードではうまくできません。
>9-9が日付形式に変化して、表示形式をうまくコントロールできないです。

手動で置換しても日付にかわるので、別の方法で。
検索して見つかったらReplace関数(SUBSTITUTEワークシート関数)で文字列を置き換えてセルに与えます。

Sub test()
  Dim r1 As Range
  'アクティブシートが対象です。
  Do
   Set r1 = Application.ActiveSheet.UsedRange.Find(what:="'", LookAt:=xlPart)
   If r1 Is Nothing Then Exit Do
   With r1
     .NumberFormat = "@"
     .Value = Replace(r1.Value, "'", "-")
   End With
  Loop
End Sub

こんな感じです。

【55759】Re:Replaceメソッドを使って、9'9を9-9に...
お礼  tk  - 08/5/18(日) 17:52 -

引用なし
パスワード
   ▼りん さん こんにちわ。

Replaceメソッドではできないのですね。残念です。、仕方ないので

>手動で置換しても日付にかわるので、別の方法で。

のように、別の方法で代用します。
すでに、For Each r in MyRange の代案で処理していたのですが、
Replaceメソッドが使えるのかどうか、確認したくて質問しました。
おかげさまですっきりしました。
貴重な時間を使って頂きありがとうございます。

4592 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free