[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『半角フリカナの抽出』(NISHIKI)
Sub hurikana() Range("B1") = Application.GetPhonetic(Range("A1")) End Sub 上記コードでフリカナを抽出しますと全角になります。 B列へ半角で抽出、あるいは変換したいのですがどのように記せばよろしいのかご教示ください。
Sub hurikana() Range("B1").value = StrConv(Application.GetPhonetic(Range("A1").value), vbNarrow) End Sub (a)
ご教示ありがとうございます。
ちょっと気になったので・・・・。半角変換は、StrConvでよいとして・・・。
Range("B1") = Application.GetPhonetic(Range("A1").value)
このGetPhoneticメソッドについてです。
セルA1に設定されたフリガナを引用しているわけではないので本来の読みとは違う表示となる 可能性がありますが、これはかまわないのですか?
これが、セルA1の漢字が、別のアプリからコピーしてきた場合は、 セルA1には、フリガナが設定されていないので逆に、読みが違う場合があってもフリガナを表示してくれるので便利なのですが・・・。
セルA1に設定されているフリガナをB1に表示するなら、
Sub test1() Range("B1").Value = StrConv(Application.Phonetic(Range("A1").Value), vbNarrow + vbKatakana) End Sub
または、
Sub test2() Range("a1").Phonetics.CharacterType = xlKatakanaHalf Range("b1").Formula = "=phonetic(a1)" End Sub
こんな方法も考えられます。
どっちのPhoneticが仕様に合っていますか? 検討してみてください。
何も入力されいないシートをアクティブにした状態で、以下のsampを実行した結果も検討してみてください。
Sub samp() Dim a1 As Range Dim b1 As Range Set a1 = Range("a1") Set b1 = Range("b1") a1.Value = "相田達郎" MsgBox "セルA1の「相田達郎」に対して、GetPhoneticメソッドを使うと・・・" b1.Value = StrConv(Application.GetPhonetic(Range("A1").Value), vbNarrow) MsgBox "セルB1に、フリガナが表示されます。確認してください" a1.ClearContents b1.ClearContents MsgBox "セルA1、B1をクリアしました。この状態で、セルA1内容に対してGetPhoneticメソッドを使うと・・・" b1.Value = StrConv(Application.GetPhonetic(Range("A1").Value), vbNarrow) MsgBox "あれっ ですよね?" End Sub
ichinose@本日、忘れかけてたナンキン結びを練習、おかげで手が豆だらけ・・
ichinoseさま、ありがとうございます。
根本がコンポンと表示され、追加質問をしようと思っておりました。 test1()は「型が一致しません」とエラーになります。 test2()は半角カタカナで表示されました。
Private Sub Worksheet_Change(ByVal Target As Range) Dim a As Range Dim b As Range Set a = Target.Offset(0, 0) Set b = Target.Offset(0, 1) If Target.Column <> 1 Then Exit Sub a.Phonetics.CharacterType = xlKatakanaHalf b.Formula = "=phonetic(a)" End Sub としてみましたが、#NAME!のエラーとなります。"=phonetic(a)"のa部分はどのようにすればよろしいのでしょうか。 c=Target.row ="phonetic(indirect(address(c,1)))" などともしてみましたが、そもそもWorksheet関数ですので変数cが機能するはずがありませんよね。
samp()もa1.Value= "根本" ととして検証させていただきましたが、1度目のMsgBoxにはネモト、2度目の MsgBoxにはコンポンと表示されました。 VBAに対しては本来?のフリカナがつき、クリアした後にはふりがな情報なくてもふりがなをふってくれる機能が働くという ことでしょうか。。。
◆他のアプリからコピーすることはありません。 陽が昇ってしまいました。。。(NISHIKI)
あれっ、修正して投稿したつもりだったんのですが・・・。
Sub test1() Range("B1").Value = StrConv(Application.Phonetic(Range("A1")), vbNarrow + vbKatakana) ' Range("A1").Value --- Range("A1") End Sub
です。
>Private Sub Worksheet_Change(ByVal Target As Range) > Dim a As Range > Dim b As Range > Set a = Target.Offset(0, 0) > Set b = Target.Offset(0, 1) > If Target.Column <> 1 Then Exit Sub > a.Phonetics.CharacterType = xlKatakanaHalf b.Formula = "=phonetic(" & a.Address & ")" >End Sub
としてみてください。
ichinose
追伸
>VBAに対しては本来?のフリカナがつき、クリアした後にはふりがな情報なくてもふりがなをふってくれる機能が働く
Getphoneticメソッドは、辞書ファイルを検索しているのだと思います。同じ漢字でも読みはいくつかあるので それを検索して返す機能を持っています。使い方をうまくすれば、結構役に立つメソッドですよ!!
Sub test() Dim kanji As String Dim hurigana As String Dim g0 As Long kanji = "根本" MsgBox kanji & " という漢字のフリガナ候補を表示します" hurigana = Application.GetPhonetic(kanji) Do Until hurigana = "" MsgBox "フリガナ候補" & g0 + 1 & " : " & hurigana g0 = g0 + 1 hurigana = Application.GetPhonetic() Loop End Sub
上記のtestを実行すれば、わかると思います。
ふりがなに変換するテキストを指定します。この引数を省略すると、以前に指定された引数 Text でのふりがな候補の文字列を返します。候補の文字列がない場合は空の文字列を返します。
以上、GetphoneticのHelpからの引用です。
で、問題は、この引数を省略しなくても、
Sub test2() Dim kanji As String Dim hurigana As String Dim kara As String Dim g0 As Long kara = "" kanji = "根本" MsgBox kanji & " という漢字のフリガナ候補を表示します" hurigana = Application.GetPhonetic(kanji) Do Until hurigana = "" MsgBox "フリガナ候補" & g0 + 1 & " : " & hurigana g0 = g0 + 1 hurigana = Application.GetPhonetic(kara) Loop End Sub
引数に 空の文字列を指定しても同じ結果が得られてしまうことでしょうね? (仕様には、そう書いてないから・・・)
ichinose
ichinoseさま、いろいろとありがとうございます。 おかげさまで、ご教示いただいた二通りとも半角フリカナ抽出することができました。 また、追伸でのアドバイスについても検証させていただきます。
修正されたコードに気がつかず、大変失礼いたしました。 お詫び申し上げます。(NISHIKI)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.