Excel VBA質問箱 IV

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

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


44408 / 76735 ←次へ | 前へ→

【37346】Re:カナで読み仮名を表示するには
発言  ichinose  - 06/5/1(月) 13:43 -

引用なし
パスワード
   こんにちは。
大元の考え方そのものを変えたら・・・という
件に関しては、他の方にお任せします。
(お聞きした内容からではまだ判断が出来ないので・・
もっとも、数式の中に固有名詞を入れるようなことは、私はまずしませんが・・)。


私が興味深いと感じたのは、
>ほんとうですね。
これです。

Excel2003で確認して頂き感謝します。

1.ユーザー定義関数が連動しない例

>>koshimizu さんが提示されたコードを新規ブックの標準モジュール
>>に

>>Function GetPhone(Rng As Range) As String
>>  GetPhone = Application.GetPhonetic(Rng.Text)
>>End Function


>>と記述しますよね?
>>
>>適当なシートの
>>
>>セルA1に 「山梨市」と入力します。
>>
>>セルB1には、「=a1」と指定します。山梨市と表示されます。
>>
>>セルC1に、「=GetPhone(b1)」と指定します。
>>「ヤマナシシ」と表示されます。
>>
>>ここで
>>
>>セルA1を「大月市」に変更します。
>>
>>セルB1は「大月市」と変化しますが、
>>セルC1は「ヤマナシシ」のまま変化しません。

これを以下のような手順で数式を準備すると正常に作動します。

2.ユーザー定義関数が連動する例

コードを新規ブックの標準モジュールに

「1.」と同様にGetPhone関数を記述します。

>>セルA1に 「山梨市」と入力します。

>>セルC1に、「=GetPhone(b1)」と指定します。

>>セルB1には、「=a1」と指定します。山梨市と表示されます。

この時点でC1は、「ヤマナシシ」表示されます。

A1を「大月市」に変更すると
B1だけでなく、C1も「オオツキシ」と変更されます。

つまり、数式の設定順序によって、ユーザー定義関数が
連動したり、しなかったりしています。

このように指定順序によって、結果が変わるような関数の仕様そのもの
に問題あり・・・、このような仕様の関数は定義してはいけない

という結論で投稿しようと思っていました。

ところが、

3. TextプロパティをValueプロパティに変更する

GetPhone関数を以下のように


Function GetPhone(Rng As Range) As String
  GetPhone = Application.GetPhonetic(Rng.value)
End Function

RangeオブジェクトのTextをValueに変更すると、
数式の設定順序に関係なく、正常に作動します。

>>セルA1に 「山梨市」と入力します。
>>
>>セルB1には、「=a1」と指定します。山梨市と表示されます。
>>
>>セルC1に、「=GetPhone(b1)」と指定します。
>>「ヤマナシシ」と表示されます。
>>
>>ここで
>>
>>セルA1を「大月市」に変更します。
>>
セルB1は「大月市」と変化し、
C1は「オオツキシ」と変化します。

更に

4.Valueプロパティを参照するだけ

Getphone関数コード内で以下のようにValueプロパティを参照するだけで
連動表示してくれることがわかりました。

Function GetPhone(Rng As Range) As String
  Dim wk As Variant
  wk = Rng.Value
  GetPhone = Application.GetPhonetic(Rng.Text)
End Function

Valueプロパティ内でTextプロパティの設定を行ってくれているのでしょうかねえ??


私は、このような時にはシートのChangeイベントで対応することが多かったので

上記のことは不思議な現象でした。


皆さんも確認してみてください。

0 hits

【37181】カナで読み仮名を表示するには にしもり 06/4/25(火) 11:18 質問
【37183】Re:カナで読み仮名を表示するには koshimizu 06/4/25(火) 11:51 回答
【37187】Re:カナで読み仮名を表示するには にしもり 06/4/25(火) 14:24 質問
【37188】Re:カナで読み仮名を表示するには Blue 06/4/25(火) 14:27 発言
【37189】Re:カナで読み仮名を表示するには にしもり 06/4/25(火) 14:42 質問
【37193】Re:カナで読み仮名を表示するには にしもり 06/4/25(火) 15:43 発言
【37195】Re:カナで読み仮名を表示するには にしもり 06/4/25(火) 16:11 質問
【37207】Re:カナで読み仮名を表示するには ichinose 06/4/25(火) 18:03 発言
【37238】Re:カナで読み仮名を表示するには にしもり 06/4/26(水) 17:29 お礼
【37250】Re:カナで読み仮名を表示するには ichinose 06/4/27(木) 8:15 発言
【37251】Re:カナで読み仮名を表示するには Jaka 06/4/27(木) 9:26 発言
【37272】Re:カナで読み仮名を表示するには koshimizu 06/4/27(木) 15:36 発言
【37280】Re:カナで読み仮名を表示するには ichinose 06/4/27(木) 21:10 発言
【37304】Re:カナで読み仮名を表示するには にしもり 06/4/28(金) 15:13 質問
【37337】Re:カナで読み仮名を表示するには ichinose 06/4/30(日) 19:53 発言
【37340】Re:カナで読み仮名を表示するには koshimizu 06/5/1(月) 8:12 発言
【37346】Re:カナで読み仮名を表示するには ichinose 06/5/1(月) 13:43 発言
【37341】Re:カナで読み仮名を表示するには クロ 06/5/1(月) 9:15 発言
【37349】Re:カナで読み仮名を表示するには クロ 06/5/1(月) 14:28 発言
【37389】Re:カナで読み仮名を表示するには にしもり 06/5/3(水) 12:09 お礼

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