Excel VBA質問箱 IV

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

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


7210 / 13644 ツリー ←次へ | 前へ→

【40519】ふりがなの表示について hito 06/7/15(土) 17:41 質問[未読]
【40523】Re:ふりがなの表示について awu 06/7/15(土) 19:11 回答[未読]
【40540】Re:ふりがなの表示について hito 06/7/16(日) 6:39 発言[未読]
【40541】Re:ふりがなの表示について ichinose 06/7/16(日) 7:22 発言[未読]
【40543】Re:ふりがなの表示について hito 06/7/16(日) 8:30 発言[未読]
【40545】Re:ふりがなの表示について ichinose 06/7/16(日) 9:10 発言[未読]
【40546】Re:ふりがなの表示について hito 06/7/16(日) 9:22 お礼[未読]

【40519】ふりがなの表示について
質問  hito  - 06/7/15(土) 17:41 -

引用なし
パスワード
   いつもお世話になっております。

ふりがなについて、相談なのですが、
ふりがなを表示する設定をしたセルで文字の入力を行い、
別のセルに格納したいのですが、その後、呼び出して
表示すると、ふりがなの表示内容が変わってしまいます。

Copyをすれば、同じものが表示されるのですが
ふりがなと漢字は別々に管理したいため
Copyを使わずに、おこないたいです。


Sub test()

Dim furigana As String
Dim kanji As String

kanji = Range("A3").Value
Range("A4 ").Value = kanji

furigana = Range("A3").Phonetic.Text
Range("A4").Phonetic.Text = furigana

Range("A3").Copy Range("A5")

End Sub

A3のセルに”文字配置の試験です。"と入力すると

A3セルは

モジ ハイチ シケン
文字配置の試験です。

となり、A4セルは

モジハイチノシケンデス。
文字配置の試験です。

となり、入力時の画面表示と変わってしまいます。

ちなみに、A5は、A3と同じものが表示されます。

入力した時と、格納後に表示した時で、表示イメージが
変わってしまうのをなんとかしたいです。

よろしくお願いいたします。

【40523】Re:ふりがなの表示について
回答  awu  - 06/7/15(土) 19:11 -

引用なし
パスワード
   こういうことですか。

Sub test2()
With Range("A10")
  .Value = Range("A3").Value
  .SetPhonetic
  .Phonetics.Visible = True
End With
End Sub

【40540】Re:ふりがなの表示について
発言  hito  - 06/7/16(日) 6:39 -

引用なし
パスワード
   ▼awu さん

回答ありがとうございます。
この場合なのですが、SetPhoneticによって
漢字からふりがなを求めていると思うので
たとえば、「東」と入力したときに
「ヒガシ」になってしまいます。
名前のフィールドにも使いたいので
「アズマ」と入力された場合は、そのまま
「アズマ」で表示したいです。

なにか良い方法はないでしょうか?
よろしくお願いいたします。

>こういうことですか。
>
>Sub test2()
>With Range("A10")
>  .Value = Range("A3").Value
>  .SetPhonetic
>  .Phonetics.Visible = True
>End With
>End Sub

【40541】Re:ふりがなの表示について
発言  ichinose  - 06/7/16(日) 7:22 -

引用なし
パスワード
   ▼hito さん:
おはようございます。

これは、セル(Range)のPhoneticsコレクションを調べないと
ならないですね!!
下記のコードで セルA1の内容とフリガナをB1に移行します。
試してみて下さい

'===========================================================
Sub main()
  Range("b1").Value = Range("a1").Value
  Call Set_phonetic(Range("a1"), Range("b1"))
  Range("b1").Phonetics.Visible = True
End Sub
'===============================================================
Sub Set_phonetic(r1 As Range, r2 As Range)
  Dim idx As Long
  On Error Resume Next
  r2.Phonetics.Delete
  For idx = 1 To r1.Phonetics.Count
    r2.Phonetics.Add r1.Phonetics(idx).Start, _
            r1.Phonetics(idx).Length, _
            r1.Phonetics(idx).Text
    Next
  On Error GoTo 0
End Sub

【40543】Re:ふりがなの表示について
発言  hito  - 06/7/16(日) 8:30 -

引用なし
パスワード
   ▼ichinose さん:
回答ありがとうございます。

思わずうなってしまいました。(^^;
奥が深いですね。

実は、氏名のフィールドに入力したデータを
ADOを使って、ACCESSのフィールドに格納後
再表示するときに、うまく表示できれば、、、と
思っていたのですが、「Phoneticsコレクション」と
言われている範囲で扱わないとダメという事でしたら
ACCESSにデータ格納という事は出来ないですよね??

もし出来るとしたら、すごいと思いますが、ichinoseさんの
回答を頂いて、こりゃ無理かな?なんて思い始めています。

私の認識って合っていますでしょうか?
もし、できる手段があるとしたら、すごいと思うですが、、、。

よろしくお願いいたします。

>▼hito さん:
>おはようございます。
>
>これは、セル(Range)のPhoneticsコレクションを調べないと
>ならないですね!!
>下記のコードで セルA1の内容とフリガナをB1に移行します。
>試してみて下さい
>
>'===========================================================
>Sub main()
>  Range("b1").Value = Range("a1").Value
>  Call Set_phonetic(Range("a1"), Range("b1"))
>  Range("b1").Phonetics.Visible = True
>End Sub
>'===============================================================
>Sub Set_phonetic(r1 As Range, r2 As Range)
>  Dim idx As Long
>  On Error Resume Next
>  r2.Phonetics.Delete
>  For idx = 1 To r1.Phonetics.Count
>    r2.Phonetics.Add r1.Phonetics(idx).Start, _
>            r1.Phonetics(idx).Length, _
>            r1.Phonetics(idx).Text
>    Next
>  On Error GoTo 0
>End Sub

【40545】Re:ふりがなの表示について
発言  ichinose  - 06/7/16(日) 9:10 -

引用なし
パスワード
   ▼hito さん:
>回答ありがとうございます。
>
>思わずうなってしまいました。(^^;
>奥が深いですね。
>
>実は、氏名のフィールドに入力したデータを
>ADOを使って、ACCESSのフィールドに格納後
>再表示するときに、うまく表示できれば、、、と
>思っていたのですが、「Phoneticsコレクション」と
>言われている範囲で扱わないとダメという事でしたら
>ACCESSにデータ格納という事は出来ないですよね??
ん、確認していませんが、ちょっと考えただけですが、
不可能だとは思いませんけどねえ!!

例えば、

一つの氏名に対して、リレーショナルなフリガナテーブルを作成すれば

テーブルの構造は、
 フィールド1 
    別テーブルの氏名フィールドのキーになるデータ(数値がよいでしょう)
 フィールド2
    Stsrt 対象氏名のフリガナの開始位置 数値
 フィールド3
    Length フリガナ対象文字数 数値   
 フィールド4
    Text フリガナ 文字列

なんてテーブルを作成すれば、情報としては
格納できると思いますが、いかがですか?

【40546】Re:ふりがなの表示について
お礼  hito  - 06/7/16(日) 9:22 -

引用なし
パスワード
   ▼ichinose さん:
回答ありがとうございます。

なるほど〜。

やり方は、あるものなんですねぇ〜。

ふりがなテーブルまでは全く頭にありませんでした。
テーブル構成も含めて、ちょっと考えてみたいと思います。

とっても勉強になりました!
ありがとうございました。

>▼hito さん:
>>回答ありがとうございます。
>>
>>思わずうなってしまいました。(^^;
>>奥が深いですね。
>>
>>実は、氏名のフィールドに入力したデータを
>>ADOを使って、ACCESSのフィールドに格納後
>>再表示するときに、うまく表示できれば、、、と
>>思っていたのですが、「Phoneticsコレクション」と
>>言われている範囲で扱わないとダメという事でしたら
>>ACCESSにデータ格納という事は出来ないですよね??
>ん、確認していませんが、ちょっと考えただけですが、
>不可能だとは思いませんけどねえ!!
>
>例えば、
>
>一つの氏名に対して、リレーショナルなフリガナテーブルを作成すれば
>
>テーブルの構造は、
> フィールド1 
>    別テーブルの氏名フィールドのキーになるデータ(数値がよいでしょう)
> フィールド2
>    Stsrt 対象氏名のフリガナの開始位置 数値
> フィールド3
>    Length フリガナ対象文字数 数値   
> フィールド4
>    Text フリガナ 文字列
>
>なんてテーブルを作成すれば、情報としては
>格納できると思いますが、いかがですか?

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