[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『phoneticで、カナが出ない場合があります』(うす)
[phoneticは、たまに他のシ-ト等から貼付けをするとかなが出ない場合がありますが、これはもうどうしようもないのでしょうか>]
掲示板などから貼り付けた場合には、文字がフリガナを持ってない場合がありますので、 標準関数では出ない場合があります。 ユーザ定義関数であればこんなことで可能になります。
'=============ここから============= Option Explicit Function MYFURI(ByVal Target As Range) As String MYFURI = StrConv(Application.GetPhonetic(Target.Value), 8) End Function '=============ここまで=============
'vbWide* 4* 文字列内の半角文字 (1 バイト) を全角文字 (2 バイト) に変換します。 'vbNarrow* 8* 文字列内の全角文字 (2 バイト) を半角文字 (1 バイト) に変換します。 'vbKatakana** 16** 文字列内のひらがなをカタカナに変換します。 'vbHiragana** 32 文字列内のカタカナをひらがなに変換します。
使い方は普通の関数同様に、 =MYFURI(A1) などと入力。(A1のフリガナ取得)
コード中の8を4に代えると全角カタカナになります。
(川野鮎太郎)
>コード中の8を4に代えると全角カタカナになります。 できれば数値を直接記載するよりは、 vbWideやvbNarrowといった定数をそのまま書いた方が良いです。 結果は一緒なんだけどね。 利点は ・意味が分かりやすい ・定数値の意味が変わった場合に修正が不要(ただ、過去例は無いと思うが) 定数使用を推奨する一番分かりやすい例が、vbNewLineですか。 WinならCrLfの意味になり、MacだとCrの意味になる。はず。 #他レスでのフォローありがとうでした (ご近所PG)
そこなんですよね〜。 アップするときどっちにしようか迷ったんですよ。 別スレでご近所さんがvbNarrowってされてましたよね。 ここでもそっちにしようかと迷ったので、一応対応表を載せておきました。 >WinならCrLfの意味になり、MacだとCrの意味になる。はず。 なるほど、OSによってというか、エクセルのバージョンによっても変わる事があるんですね。 だから改行コードも& vbCrLf & って感じだったんですね。 いつも丁寧な説明ありがとうございます。m(._.)m ペコッ
ふと思ったことを追加 上記のことからすると、InputBoxやMsgBoxなども同様にvbYesNo等の定数を使ったほうが良いってことですね。 (川野鮎太郎)
ただよくよく考えてみると、 Excelはいまだに2000どころか97などの古いバージョンも現役だったりするので、 一概に「全て定数にせよ」とは言い切れない部分もあるのかも。 基本的にバージョンアップする際には問題ないけど、 新しいバージョンにしか定義されていない定数とかあったら バージョンダウンする際にエラーになるだろうし… 具体的な例は示せませんが。 追記:それによってバージョンダウンにおける問題箇所を事前に把握できるというのもまた利点かも…どっちやねん(笑) vbNewLineはWinとMac両方で使う可能性があるExcelVBAだからこそ生まれた定数だったりするんでしょうね。 以上雑文でした。 そして衝突。 >上記のことからすると、InputBoxやMsgBoxなども同様にvbYesNo等の定数を使ったほうが良いってことですね。 以下の書き方でどっちが分かりやすいか。 自明。 定数を推奨する理由の最たるものです。 Sub test1() If MsgBox("yes or no?", vbYesNo + vbQuestion) = vbYes Then MsgBox "yes" Else MsgBox "no" End If End Sub Sub test2() If MsgBox("yes or no?", 4 + 32) = 6 Then MsgBox "yes" Else MsgBox "no" End If End Sub (ご近所PG)
ふむふむ、_〆\(..;) メモメモ な〜るほど、ザわーるど。(古 判りやすい例題をありがとうございます。^^ (川野鮎太郎)
!?工エエェ(゚〇゚ ;)ェエエ工!? ご近所さんのは、フリガナ取得用じゃないですよ_/ ̄|○ il||li これで試してください。m(._.)m ペコッ
Option Explicit Function MYFURI(ByVal Target As Range) As String MYFURI = StrConv(Application.GetPhonetic(Target.Value), vbNarrow) End Function
マクロのコードは↑だけです。
ワークシートで =MYFURI(A1) などと入力。(A1のフリガナ取得)
(川野鮎太郎)
Sub A() ←消してください。 Option Explicit Function MYFURI(ByVal Target As Range) As String MYFURI = StrConv(Application.GetPhonetic(Target.Value), vbNarrow) End Function End Sub ←消してください。
(うす)
上のように^^ (川野鮎太郎)
(*'ω'*)......ん?どこに貼り付けましたか? 挿入−標準モジュールに入れてみてください。 もしかして、97には対応してないのかな・・・。_/ ̄|○ il||li
Option Explicit Function MYFURI(ByVal Target As Range) As String ↑こんな感じでつながってたらダメですから、 Option Explicit Function MYFURI(ByVal Target As Range) As String 2行にしないとダメですけど。
または、Option Explicit ←も消したらどうなりますかね。 (川野鮎太郎)
今回のはユーザー定義関数ですので、マクロの実行は必要ありませんよ。 上記のコードを標準モジュールに貼り付けてた、ワークシートで普通の関数のように使ってください。 その際のかんすうめいが MYFURI なのです。 ですから A1セルのフリガナを取得する場合に =MYFURI(A1) です。 (川野鮎太郎)
多分大丈夫だと思いますけどね(^_^A; (川野鮎太郎)
もう既にご理解いただいたかと思いますが >>ご近所さんのvbaを貼りつけてみます。 >ご近所さんのは、フリガナ取得用じゃないですよ と、川野鮎太郎さんも上記のように書いている通り、 私の提示しているコードはご質問内容に対する回答ではなく、 単なるマクロに関する雑文ですので…私が書いたVBA等の部分は無視してください。 失礼しました。 (ご近所PG)要らん事書くのが好きなのょ…
( ̄0 ̄;アッ そう言えば・・・・・、 GetPhonetic関数はExcel2000からの機能だったような気がするな_/ ̄|○ il||li (川野鮎太郎)
↑そのとおりです。(みやほりん)
やはりそうでしたか。_/ ̄|○ il||li 確認ありがとうございます。m(._.)m ペコッ (川野鮎太郎)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.