解決済みの質問
質問:No.2428455
困ってます
お気に入り投稿に追加する (0人が追加しました)
回答数5
閲覧数3324
エクセルでセル内の一部分だけ書式ごと置換したい
エクセルの置換でオプションを使えば、書式も置換できますが、置換したい文字だけでなく、セル全体の書式が置換されてしまいます。
例えば「ロシアとアメリカ」とあるセルの、「アメリカ」を「中国」に置換して、「中国」の部分だけフォントをゴシックから明朝に変えたくても、セル全体が明朝になってしまいます。

今は、とりあえず「アメリカ」を「中国」に、オプションなしで一括変換して、ひとつずつ手動でフォントを変更していますが、大変な手間が掛かり、フォントの選択ミスなども起こります。

なにかいい方法はないでしょうか。
よろしくお願いします。
投稿日時 - 2006-09-24 16:34:30
質問者が選んだベストアンサー
回答:No.5
こんにちは。Wendy02です。

>あとから「文字列一括置換」をやると、セルごとフォントが元に戻っちゃうのは、エクセルの仕様でしかたないですね。^^;

例えば、「アメリカ」を「中国」に換える場合を考えると、まず、「アメリカ」を「中国」に変更してから、「中国」セルの中の書式を換えるという仕組みになるわけです。それ自体の仕組みは、容易に想像できるかとは思います。つまり、このようにすれば可能です。


Sub ReplaceFormatInCells()
'セルの書式の一部を変更するマクロ
 Dim mWhat As String
 Dim mFadd As String
 Dim c As Range
 Dim mFind As String
  mFind = Application.InputBox("検索する単語を入れてください。", Type:=2)
  If mFind = "False" Or mFind = "" Then Exit Sub
  mWhat = Application.InputBox("置換する単語を入れてください。", Type:=2)
  If mWhat = "False" Or mWhat = "" Then Exit Sub
 
  ActiveSheet.UsedRange.Replace _
   What:=mFind, Replacement:=mWhat, _
   SearchOrder:=xlByRows, MatchCase:=True

'Sub ReplaceFromatInCells() ~ Set c = の7行分をこのように置き換えれば出来ます。
投稿日時 - 2006-09-25 14:20:27
この回答を支持する
(現在0人が支持しています)
お礼
ありがとうございます。
こうすれば一度に文字列もフォントも変えられますね。
ひとつのセルに変えたい文字列が複数ある場合でも対応できるように、がんばってみたいと思います。
投稿日時 - 2006-09-26 10:18:58
この質問は役に立ちましたか?
4人が「このQ&Aが役に立った」と投票しています
ベストアンサー以外の回答
回答:No.4
こんばんは。

もし、もう解決済みでしたら、以下は無視してくださって結構です。

'標準モジュールです。

Private Const の後にところに、それぞれ、選んで書き入れてください。


'-------------------------------------------------
'Option Explicit
'フォントの種類
Private Const FNAME As String = "MS 明朝" 'MS ゴシック
'文字のスタイル
Private Const FSTYLE As String = "標準" '太字, イタリック
'文字の大きさ
Private Const FSIZE As Single = 11
'文字の色
Private Const FCOLT As Integer = xlAutomatic  '色は以下から数字を選ぶ

'黒(1),白(2),赤(3),黄緑(4),青(5),黄色(6),ピンク(7),
'水色 (8), 茶(9), 緑(10), 藍(11), 黄土色(12), 紫(13), 濃緑(14)
'灰色 (15), xlAutomatic のみ「自動」(ColorIndexを調べると分かります)

Sub ReplaceFormatInCells()
'セルの書式の一部を変更するマクロ
 Dim mWhat As String
 Dim mFadd As String
 Dim c As Range
 
 mWhat = Application.InputBox("検索する単語を入れてください。", Type:=2)

 
 If mWhat = "False" Or mWhat = "" Then Exit Sub

 Set c = ActiveSheet.UsedRange.Find( _
  What:=mWhat, _
  LookIn:=xlValues, _
  LookAt:=xlPart, _
  SearchDirection:=xlNext, _
  MatchCase:=True, _
  MatchByte:=True)
      If Not c Is Nothing Then
      mFadd = c.Address
      ReplaceFont c, mWhat
      Do
      Set c = ActiveSheet.UsedRange.FindNext(c)
      If c.Address = mFadd Then Exit Sub
       ReplaceFont c, mWhat
      Loop Until c Is Nothing
     End If
End Sub
Private Sub ReplaceFont(rng As Range, strSearch As String)
Dim i As Integer
Dim Ln As Integer
      Ln = Len(strSearch)
      i = InStr(rng.Value, strSearch)
      With rng.Characters(i, Ln).Font
       .Name = FNAME
       .FontStyle = FSTYLE
       .Size = FSIZE
       .ColorIndex = FCOLT
      End With
End Sub
投稿日時 - 2006-09-24 23:47:00
この回答を支持する
(現在0人が支持しています)
お礼
ありがとうございます。
「文字列一括置換」→「フォント変更」なら、これでできそうです。
あとから「文字列一括置換」をやると、セルごとフォントが元に戻っちゃうのは、エクセルの仕様でしかたないですね。^^;
投稿日時 - 2006-09-25 12:18:14
回答:No.3
2番です。

下記のページの紹介にはフォントの変更はありませんが、ちょっと手を加えるとフォントの設定も可能になります。

.ColorIndex = tmpColorIndex 'カラー
の他に
.Name = tmpFont 'フォント
を付け足します。
そしてtmpFontの値は
tmpFont = "MS 明朝"
tmpFont = "MS P明朝"
tmpFont = "MS ゴシック"
tmpFont = "MS Pゴシック"
などとします。

私はフォント設定も追加してユーザーフォームを作っております。
投稿日時 - 2006-09-24 19:10:17
この回答を支持する
(現在0人が支持しています)
お礼
私も自分用のユーザーフォームを作ってみようと思います。何度もありがとうございました。
投稿日時 - 2006-09-25 12:19:16
回答:No.2
はじめまして

ココは参考になると思うのですが、いかがでしょうか?

http://www.excel7.com/personal/personal1-4.htm
投稿日時 - 2006-09-24 18:58:46
この回答を支持する
(現在0人が支持しています)
お礼
そうです。
私が悩んでいたのはまさにこれです。
ありがとうございました。
投稿日時 - 2006-09-24 20:34:04
回答:No.1
置換したいセル範囲だけ選択しておいて、置換すればよいのでは?

多分、飛び飛びに離れたセル範囲でもOKだと思いますよ。

フォントの書式は、置換直後、選択された状態のまま変更すればよかったと思います。
投稿日時 - 2006-09-24 17:03:22
この回答を支持する
(現在0人が支持しています)
補足
質問が下手ですみません。
例で言えば「ロシアとアメリカ」というのがひとつのセルの中に入っているのです。A1とかに。
で、その中の「アメリカ」の部分だけを置換したいのですが、置換オプションでフォントを変えると、A1セル全体、つまり「ロシアとアメリカ」すべてのフォントが変わってしまうんです。
こうしたセルが膨大な数あるので、一つ一つ手作業では大変なので、一度にできないかと思っています。

>フォントの書式は、置換直後、選択された状態のまま変更すればよかったと思います。

やってみましたが、置換するとすぐ次の該当セルへ飛びます。
置換した部分だけフォントを変えたいのですが、また検索しなおして、一つ一つやるしかないのでしょうか。
投稿日時 - 2006-09-24 17:44:24
もっと聞いてみる
関連するQ&Aはこちら
現在、Windouws XPを使用しています。 仕事の関係でどうしても「HGS明朝B」と「TB丸ゴシックR」のフォントを使用したいのですがPCの元々のフォントには入っておりません。 この2つのフォント...
Adobe Illustrator9.0を使って、簡単な文章などを書いています。 昨日、突然、続きの文章を作成しようとしたら、白紙の状態なのです、 カーソルを合わせると青い線で、文章があることは示さ...
Office2003 通常Excelを起動するとフォントはゴシックですが、明朝になるように設定するにはどうすればよいのですか? よろしくお願いします。 ...
この他の関連するQ&Aをキーワードで探す
ソフトウェアのサブカテゴリ
カテゴリ:Office系ソフト
RSS
カテゴリ:Office系ソフト
-PR-
PR
-PR-