• ベストアンサー

マクロの編集について教えてください。

こんにちは。 長くVBAから離れており、思い出しながらマクロを作っているところです。 目的は、B列にある数百の漢字・ひらがな・カタカナのデータを"あいうえお順"に並び替えたいのです。 それで、C列に「書式」「ふりがな」を使って、コピーしてふりがなを付け、「並び替え」で"あいうえお順"に並び替えることとしました。 データの中には、コピー・加工したものも多く、セルに貼り付けても同時にふりがなが出てきません。 手作業で成功しましたので、マクロをつくり、 For Next を使って、全ての行を同時に処理したいと思い、マクロを作成しました。 ところが、マクロ作成時、B6に"東京"を入力。マクロに"東京"が書きこまれたことから、他の文字列(例えば"大阪")をB6に入力しても、マクロを実行すると、やはり"東京"がC6に表示されます。 マクロは次のとおりです。 Range("B6").Select Selection.Copy Range("C6").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("C6").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "東京" ActiveCell.Characters(1, 2).PhoneticCharacters = "とうきょう" Range("B7").Select この問題をクリアしたいのですが、このマクロを修正してもいいですし、全く別のマクロでもかまいません。 いいサンプルがありましたら、ご教授ください。 よろしくおねがいします。

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

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

Wendy02 です。 今度は、任意のふりがなデータを入れるほうなのですか? >データの中には、コピー・加工したものも多く、セルに貼り付けても同時にふりがなが出てきません。 前回の私のマクロは、ふりがなデータを入れることはしませんでしたが、ふりがなを出すことはできたはずですが……?それで、並び替えができると信じて作りましたが、それではだめだったのですか? ローマ字を含めた、それ自身の文字列のふりがなデータで並び替えするのは、私には不可能だと思いますが。 '--------------------------------------------- これで、東京、大阪程度なら、とうきょう、おおさかのふりがなが復活します。 '--------------------------------------------- Sub ふりがな復活() Dim c As Range  For Each c In Selection   c.SetPhonetic  Next End Sub '--------------------------------------------- 'A列にデータがあったら、B列にふりがなデータがあれば、それが代入されます。 '--------------------------------------------- Sub ふりがな代入()  Dim c As Range  For Each c In Selection   If Not IsEmpty(c) And Not IsEmpty(c.Offset(, 1)) Then    If Application.Phonetic(c) <> "" Then     If Not StrConv(Application.Phonetic(c), vbWide) Like "[ぁ-ヶ]*" _      Then      c.Phonetic.Text = c.Offset(, 1).Value     End If    End If   End If  Next End Sub

noname#18526
質問者

お礼

感謝。感謝。感謝。感謝。感謝。感謝。感謝。感謝。感謝。感謝。 ふりがな復活で、うまく処理でき増した。ご面倒かけました。 これから、ひとつひとつふりがな変換をすることを考えると気が遠くなりそうでした。 昔は、かなりマクロを駆使していましたが、勘が鈍っています。また、勉強しなおしです。今後も質問の際は、よろしくお願い申しあげます。

その他の回答 (2)

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

>この問題をクリアしたいのですが 記録マクロでは、変化する部分に対応できません。 inputBox を使って、入力するなどの変更が必要になります。 >C列に「書式」「ふりがな」を使って、コピーしてふりがなを付け、 1.最初にマクロで振り仮名を抜き出し、C列に振り仮名を書き出す。 2.適当な変換辞書(東京→とうきょう等)を自分で作成してマクロで書き換えるか、手作業で振り仮名を作成。 (変換辞書やVBAを作成する時間を考えると、手作業の修正の方短時間で済むでしょう) 3.作成した振り仮名を文字に設定する。 というような手順が良いかと思います。 2の部分は貴方の努力が必要です。他の部分はマクロで自動簡単に出来るでしょう。

参考URL:
http://www.officetanaka.net/excel/vba/tips/tips49.htm
noname#18526
質問者

補足

すみません。 >1.最初にマクロで振り仮名を抜き出し、C列に振り仮名を書き出す。 ここが少し理解できません。もう少し説明いただけませんか。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

ようするに、ふりがなが無いデータに自動でふりがなを付けたいって事? B6 には 大阪 と入力されているが、ふりがなは出ない。 → マクロでセットしたい

noname#18526
質問者

補足

すみません。正しくは「"大阪")をB6に入力しても」は、「。「"大阪")をB6に貼り付けても」です。 手打ちで入力すると、その場でふりがながでますが、貼り付けたもの、あるいは、過去に貼り付けられたものは、一件づつ手作業でふりがなを振ることになります。 これを、すべての行でマクロにより一括処理したいのですが、・・・・。

関連するQ&A

専門家に質問してみよう