Excel VBA質問箱 IV

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

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


6431 / 13646 ツリー ←次へ | 前へ→

【22747】ふりがな挿入の件 hisao 05/3/2(水) 9:10 質問[未読]
【22749】Re:ふりがな挿入の件 G-Luck 05/3/2(水) 9:49 回答[未読]
【22754】Re:ふりがな挿入の件 hisao 05/3/2(水) 12:55 お礼[未読]
【22755】Re:ふりがな挿入の件 G-Luck 05/3/2(水) 14:13 回答[未読]
【22765】Re:ふりがな挿入の件 hisao 05/3/2(水) 15:58 お礼[未読]
【22766】Re:ふりがな挿入の件 G-Luck 05/3/2(水) 16:12 発言[未読]
【45204】Re:ふりがな挿入の件 キンタロウ 06/12/15(金) 11:58 質問[未読]
【45214】Re:ふりがな挿入の件 Kein 06/12/15(金) 17:12 回答[未読]
【45290】Re:ふりがな挿入の件 キンタロウ 06/12/18(月) 11:27 お礼[未読]

【22747】ふりがな挿入の件
質問  hisao E-MAIL  - 05/3/2(水) 9:10 -

引用なし
パスワード
   お教え下さい
range("A1")にユーザーフォームのtext1をフリガナ入りで書き込みたいのですが

range("A1").select
Selection.Value = TextBox1.Value
Selection.Phonetics.Visible = True
Selection.Phonetics.CharacterType = xlKatakanaHalf
Selection.Phonetics.Alignment = xlPhoneticAlignNoControl
何故かフリガナが漢字になります。
間違いをお教え下さい。
更に この フリガナ付の文字列を VLOOKUP関数で sheets("B").range("B1")に読み取りたいのですが range("B1")のセルにフリガナ表示設定をしておいても
フリガナを表示してくれないですよね。何か良い関数設定の方法は無いでしょうか?

【22749】Re:ふりがな挿入の件
回答  G-Luck  - 05/3/2(水) 9:49 -

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

G-Luckといいます。

フリガナは変換前の入力から判別しているようで、今回のように直接入力すると入力されたもの自体が、ふりがなになってしまうようです。
なので、GetPhoneticを使ってはどうでしょうか?これは、入力を判別しているわけではなく、一般的読みを返します。
※Selectionをrgで受けているのは、VBEの機能を使うためで他意はありません。

Dim rg As Range

Range("A1").Select
Set rg = Selection
rg.Value = TextBox1.Value
rg.Phonetic.Text = Application.GetPhonetic(TextBox1.Value)

VLOOKUPについては、式自体のフリガナを表示することは出来ないようです。
なので、PHONETIC(VLOOKUP〜)としてフリガナを表示するセルを作るというのでどうでしょうか?

【22754】Re:ふりがな挿入の件
お礼  hisao E-MAIL  - 05/3/2(水) 12:55 -

引用なし
パスワード
   ▼G-Luck さん:
早速お返事有り難う御座います
>Range("A1").Select
>Set rg = Selection
>rg.Value = TextBox1.Value
>rg.Phonetic.Text = Application.GetPhonetic(TextBox1.Value)
getphoneticを知りませんでした。バッチリです。
ただ 
>PHONETIC(VLOOKUP〜)としてフリガナを表示するセルを作るというのでどうでしょうか?
と言うのは phonetic の対象が関数になるので どうも うまく行きません。
それで
Range("I1").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],A,2,0)"
Set rg = Selection
rg.Copy
Selection.PasteSpecial Paste:=xlValues
rg.Phonetic.Text = Application.GetPhonetic(rg)
rg.Phonetics.Visible = True
としたのですが ちょっとぎくしゃくしますね。
それと getphonetic では 一旦決めた読みが変わる可能性が有りますね。
無い物ねだりかも知れませんが
例えば range("B1")にカナが有るとして range("B1")の値をrange("A1")の上書きに強制的に持ってくる方法なんて無いでしょうか?
無理を言ってすみません。


>▼hisao さん:
>
>G-Luckといいます。
>
>フリガナは変換前の入力から判別しているようで、今回のように直接入力すると入力されたもの自体が、ふりがなになってしまうようです。
>なので、GetPhoneticを使ってはどうでしょうか?これは、入力を判別しているわけではなく、一般的読みを返します。
>※Selectionをrgで受けているのは、VBEの機能を使うためで他意はありません。
>
>Dim rg As Range
>
>Range("A1").Select
>Set rg = Selection
>rg.Value = TextBox1.Value
>rg.Phonetic.Text = Application.GetPhonetic(TextBox1.Value)
>
>VLOOKUPについては、式自体のフリガナを表示することは出来ないようです。
>なので、PHONETIC(VLOOKUP〜)としてフリガナを表示するセルを作るというのでどうでしょうか?

【22755】Re:ふりがな挿入の件
回答  G-Luck  - 05/3/2(水) 14:13 -

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

>と言うのは phonetic の対象が関数になるので どうも うまく行きません。
失礼しました、何も検証はしていなかったので。
そこで

=VLOOKUP("X",A3:C5,3,False)
だとしたら、

=PHONETIC(INDEX(A3:C5,MATCH("X",A3:A5,0),3))
でどうでしょう?

>それと getphonetic では 一旦決めた読みが変わる可能性が有りますね。
意味がわかりかねますが、

TextBox1とTextBox2を用意して、1をフリガナ、2を入力とします。

下記コードでどうでしょうか?
入力すれば、自動的に、フリガナがTextBox1に出力されます。
フリガナが間違っていれば、修正も出来ます。
フリガナを修正後に、追加で入力しても、フリガナも追加されます。
ただ、バックスペース等で削除しても、フリガナは削除されません

フリガナの出力方法はいくつかあると思います。
常にGetPhoneticで出力するとか、フリガナに一度手をつけると、それ以降は変更しないとか。運用を考えて、どれがいいかを決めてください。

'以下コード
Option Explicit

Private Sub TextBox2_Change()
  
  Static oldText As String
  Dim ChangeText As String
  
  If TextBox2.Value = "" Then
    oldText = ""
    TextBox1.Value = ""
  End If
  
  ChangeText = Mid(TextBox2.Value, Len(oldText) + 1)
  
  TextBox1.Text = TextBox1.Text & Application.GetPhonetic(ChangeText)
  oldText = TextBox2.Value
End Sub

Public Sub DAINYUU()

  Dim rg As Range

  Range("A1").Select
  Set rg = Selection
  rg.Value = TextBox2.Value
  rg.Phonetic.Text = TextBox1.Value
  
  TextBox2.Value = ""

End Sub

>例えば range("B1")にカナが有るとして range("B1")の値をrange("A1")の上書きに強制的に持ってくる方法なんて無いでしょうか?

すいません、理解できません。

【22765】Re:ふりがな挿入の件
お礼  hisao E-MAIL  - 05/3/2(水) 15:58 -

引用なし
パスワード
   ▼G-Luck さん:
ご多忙中 詳しくご回答頂き誠に有り難う御座いました。
今後も宜しくお願い致します。

>▼hisao さん:
>
>>と言うのは phonetic の対象が関数になるので どうも うまく行きません。
>失礼しました、何も検証はしていなかったので。
>そこで
>
>=VLOOKUP("X",A3:C5,3,False)
>だとしたら、
>
>=PHONETIC(INDEX(A3:C5,MATCH("X",A3:A5,0),3))
>でどうでしょう?
>
>>それと getphonetic では 一旦決めた読みが変わる可能性が有りますね。
>意味がわかりかねますが、
>
>TextBox1とTextBox2を用意して、1をフリガナ、2を入力とします。
>
>下記コードでどうでしょうか?
>入力すれば、自動的に、フリガナがTextBox1に出力されます。
>フリガナが間違っていれば、修正も出来ます。
>フリガナを修正後に、追加で入力しても、フリガナも追加されます。
>ただ、バックスペース等で削除しても、フリガナは削除されません
>
>フリガナの出力方法はいくつかあると思います。
>常にGetPhoneticで出力するとか、フリガナに一度手をつけると、それ以降は変更しないとか。運用を考えて、どれがいいかを決めてください。
>
>'以下コード
>Option Explicit
>
>Private Sub TextBox2_Change()
>  
>  Static oldText As String
>  Dim ChangeText As String
>  
>  If TextBox2.Value = "" Then
>    oldText = ""
>    TextBox1.Value = ""
>  End If
>  
>  ChangeText = Mid(TextBox2.Value, Len(oldText) + 1)
>  
>  TextBox1.Text = TextBox1.Text & Application.GetPhonetic(ChangeText)
>  oldText = TextBox2.Value
>End Sub
>
>Public Sub DAINYUU()
>
>  Dim rg As Range
>
>  Range("A1").Select
>  Set rg = Selection
>  rg.Value = TextBox2.Value
>  rg.Phonetic.Text = TextBox1.Value
>  
>  TextBox2.Value = ""
>
>End Sub
>
>>例えば range("B1")にカナが有るとして range("B1")の値をrange("A1")の上書きに強制的に持ってくる方法なんて無いでしょうか?
>
>すいません、理解できません。

【22766】Re:ふりがな挿入の件
発言  G-Luck  - 05/3/2(水) 16:12 -

引用なし
パスワード
   修正
>Option Explicit
>
>Private Sub TextBox2_Change()
>  
>  Static oldText As String
>  Dim ChangeText As String
>  
>  If TextBox2.Value = "" Then
>    oldText = ""
>    TextBox1.Value = ""
>  End If
>  
>  ChangeText = Mid(TextBox2.Value, Len(oldText) + 1)
>  
   If ChangeText <> "" Then
>   TextBox1.Text = TextBox1.Text & Application.GetPhonetic(ChangeText)
   End If
>  oldText = TextBox2.Value
>End Sub
>
>Public Sub DAINYUU()
>
>  Dim rg As Range
>
>  Range("A1").Select
>  Set rg = Selection
>  rg.Value = TextBox2.Value
>  rg.Phonetic.Text = TextBox1.Value
>  
>  TextBox2.Value = ""
>
>End Sub

【45204】Re:ふりがな挿入の件
質問  キンタロウ  - 06/12/15(金) 11:58 -

引用なし
パスワード
   いつも過去の事例を検索して利用させて頂いてます。
ふりがなの件ですが、
過去の事例(フォームからセルへの投入)
    ↓
Dim rg As Range
Range("A1").Select
Set rg = Selection
rg.Value = TextBox1.Value
rg.Phonetic.Text = Application.GetPhonetic(TextBox1.Value)
    ↓
セルにはふりがな付きで投入される事確認済みですが、私目が作成
しているケースでは、投入セルの位置を変数にて設定しているので
うまくいきません。
    ↓
Cells(rw, 3) = TextBox1.Value
Cells(rw, 4) = TextBox2.Value
Cells(rw, 7) = ComboBox2.Value
Cells(rw, 10) = TextBox4.Value
Cells(rw, 11) = TextBox6.Value
Cells(rw, 12) = ComboBox3.Value
    ↓
投入行を与えられた値により決定し、その行位置に属する列毎にフ
ォームから入力するよう設定しています。
このうち、

Cells(rw, 4) = TextBox2.Value

の部分は氏名を入力する部分で、この部分でふりがな付きでセル入
力したいのですが、このような場合はどのように設定すれば良いの
でしょうか?

宜しくお願い致します。

【45214】Re:ふりがな挿入の件
回答  Kein  - 06/12/15(金) 17:12 -

引用なし
パスワード
   Dim i As Long, rw As Long
Dim CAry As Variant, VAry As Variant

'変数 rw に値をセットしておく
CAry = Array(3, 4, 7, 10, 11, 12)
VAry = Array(TextBox1.Value, TextBox2.Value, _
ComboBox2.Value, TextBox4.Value, TextBox6.Value, _
ComboBox3.Value)
For i = 0 To 5
  With Cells(rw, CAry(i))
   .Value = VAry(i)
   .Phonetic.Text = _
   Application.GetPhonetic(VAry(i))
  End With
Next i

などとするとか・・。単に配列に入れてループしただけですが。

【45290】Re:ふりがな挿入の件
お礼  キンタロウ  - 06/12/18(月) 11:27 -

引用なし
パスワード
   ▼Kein さん:
回答ありがとうございます。反応遅れまして申し訳ありません。
早速試してみましたが、色々エラーが出まして....
私目の質問の仕方も悪かったかと思います。
試行錯誤を繰り返した結果、以下の記述で解決しました。
     ↓
Cells(rw, 3) = TextBox1.Value
Cells(rw, 4) = TextBox2.Value
Cells(rw, 4).Phonetic.Text = Application.GetPhonetic(TextBox2.Value)
Cells(rw, 6) = ComboBox2.Value
Cells(rw, 7) = TextBox4.Value
Cells(rw, 9) = TextBox5.Value

ありがとうございました。

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