Excel VBA質問箱 IV

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

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


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

【46420】別のセルにフリガナを振る方法 マップー 07/2/2(金) 13:48 質問[未読]
【46421】Re:別のセルにフリガナを振る方法 りん@とおりすがり 07/2/2(金) 14:06 発言[未読]
【46425】Re:別のセルにフリガナを振る方法 ichinose 07/2/2(金) 18:45 発言[未読]
【46458】マシン性能が弱く、VBAに頼りたいのです... マップー 07/2/3(土) 21:53 お礼[未読]
【46462】Re:マシン性能が弱く、VBAに頼りたいの... ichinose 07/2/3(土) 22:28 発言[未読]
【46547】ありがとうございました。たすかりました。 マップー 07/2/6(火) 14:16 お礼[未読]
【46457】初心者すぎてすみません。 マップー 07/2/3(土) 21:45 お礼[未読]

【46420】別のセルにフリガナを振る方法
質問  マップー  - 07/2/2(金) 13:48 -

引用なし
パスワード
   基本のことですみません。


複数あるシートの一つのシート(シート名 C だとします)に、
E列のセルに文字を入力したら、その左隣のセルにフリガナを取得させたいのです。


セルE5に漢字かな混じりで 松下電気 と入力したら、
セルD5に半角カナで マツシタデンキ と表示するようにしたいのです。


同じく、D列については、すべての行でE列のフリガナを取得したいのです。


どうかよろしくお願いいたします。

【46421】Re:別のセルにフリガナを振る方法
発言  りん@とおりすがり  - 07/2/2(金) 14:06 -

引用なし
パスワード
   マップー さん、こんにちわ。

>複数あるシートの一つのシート(シート名 C だとします)に、
>E列のセルに文字を入力したら、その左隣のセルにフリガナを取得させたいのです。
↓最近のログですが、参考になりませんか?
h t t p://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=46372;id=excel

【46425】Re:別のセルにフリガナを振る方法
発言  ichinose  - 07/2/2(金) 18:45 -

引用なし
パスワード
   マップー さん、りんさん、こんばんは。

VBAを使わないなら、Phonetic関数を利用する方法もあります。


まず、

E列を選択した状態で「書式」---「ふりがな」---「設定」とクリックし、
「ふりがなの設定」ダイアログを表示させます。

ふりがなタブの種類で「半角カタカナ」を選択し、OKボタンをクリックします。


これで 例えば、セルE5に 松下電器 と入力します。

次に セルD5に =phonetic(e5)
と指定します。これでD5には マツシタデンキ と表示されます。

試してみてください。

【46457】初心者すぎてすみません。
お礼  マップー E-MAIL  - 07/2/3(土) 21:45 -

引用なし
パスワード
   りん@とおりすがり さん、ヒントを教えていただいて、ありがとうございます。

私は恥ずかしいほどの初心者で、この質問をする前に、1時間以上ネットで検索をしてみましたが、なかなか理解ができませんでした。
教えていただいた
h t t p://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=46372;id=excel


についても、質問前に拝見しましたが、応用できませんでした。
スミマセン。

まず、列の指定がどうするものなのでしょう。B列ならば、"B"とすればよいのかと思いましたが、違いました。

もう少し、考えてみます。


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

【46458】マシン性能が弱く、VBAに頼りたいので...
お礼  マップー E-MAIL  - 07/2/3(土) 21:53 -

引用なし
パスワード
   ichinose さん、こんばんは。

Phonetic関数は、私もよく利用します。

説明をしなくて大変申し訳ありませんでした。

今回、VBAが必要になった理由は、Phonetic関数を列の全部に振ると、エクセルの動作が遅くなるような気がしているからなのです。

私の使用パソコンは、ノートタイプで、CPUも800MBという相当古いものです。


VBAなら、処理速度を気にせず、利用できるかと思い探しています。

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

【46462】Re:マシン性能が弱く、VBAに頼りたい...
発言  ichinose  - 07/2/3(土) 22:28 -

引用なし
パスワード
   こんばんは。
>
>Phonetic関数は、私もよく利用します。
>
>説明をしなくて大変申し訳ありませんでした。
>
>今回、VBAが必要になった理由は、Phonetic関数を列の全部に振ると、エクセルの動作が遅くなるような気がしているからなのです。
なるほど・・・。
では、このPhonetic関数をVBAコード内で使いましょうか!!

当該シートのシートモジュール(標準モジュールではないですよ)に

'===============================================================
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim rng As Range
  Dim crng As Range
  Application.EnableEvents = False
  Set rng = Application.Intersect(Target, Range("E:E"))
  If Not rng Is Nothing Then
    For Each crng In rng
     With crng
       .Offset(0, -1).Value = _
        Evaluate("asc(phonetic(" & .Address & "))")
       End With
     Next
    End If
   
  Application.EnableEvents = True
End Sub

として、E列に「松下電器」と入力してください。

対応するD列に「マツシタデンキ」と表示されます。
D列には、関数ではなく実際の文字列が入っているはずです。

ためして見てください。

【46547】ありがとうございました。たすかりました...
お礼  マップー  - 07/2/6(火) 14:16 -

引用なし
パスワード
   ▼ichinose さん 、ご親切にありがとうございました。

下記のコードでうまくできました。

お世話になりました。

一安心しました。


>
>'===============================================================
>Private Sub Worksheet_Change(ByVal Target As Range)
>  Dim rng As Range
>  Dim crng As Range
>  Application.EnableEvents = False
>  Set rng = Application.Intersect(Target, Range("E:E"))
>  If Not rng Is Nothing Then
>    For Each crng In rng
>     With crng
>       .Offset(0, -1).Value = _
>        Evaluate("asc(phonetic(" & .Address & "))")
>       End With
>     Next
>    End If
>   
>  Application.EnableEvents = True
>End Sub

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