dポイントプレゼントキャンペーン実施中!

Excel2000で住所録を作成(打ち込み)します。「A1」に漢字名前をローマ字入力で作成し「B1」にアルファベット(ローマ字打ちそのまま)のよみがなを出したいのです。
カタカナまではPHONETIC関数で出来たのですがローマ字が出来ません。過去ログでは nishi6さんが http://www.okweb.ne.jp/kotaeru.php3?q=118541で回答されていたのですが、「標準モジュールに貼り付ける」の意味がわかりません。セルに貼り付ける?マクロを使う?どなたか補足または新たに教えていただけませんか?

A 回答 (2件)

『コンパイルエラー:SubまたはFanctionが定義されていません。

』のエラーが出るのは、コードが正確に貼り付けられていないからだと思われます。
すべて消去し、下記をもう一度貼り付けてみてください。特に、2つ目の『Public Function KomojiOkikae』をよく確認してください。



Public Const Roma_Boin = "AIUEO"
Public Const Kata_S1 = "AアイウエオKカキクケコSサシスセソTタチツテトNナニヌネノ"
Public Const Kata_S2 = "HハヒフヘホMマミムメモYヤイユエヨRラリルレロWワイウエヲ"
Public Const Kata_S3 = "GガギグゲゴZザジズゼゾDダヂヅデドBバビブベボPパピプペポ"

Public Function changeKatakana2Romaji(srcMoji As String)
  Dim kataMoji As String 'カタカナ文字
  Dim RomaMoji As String 'ローマ字
  Dim L As Long '文字カウンタ
  Dim elm As String '1文字
  Dim Pot As Integer '変換テーブルでの位置
  Dim wkBoin, wkSiin As String '母音と子音
  Dim chgTBL As String '変換テーブル
    chgTBL = Kata_S1 & Kata_S2 & Kata_S3
  kataMoji = StrConv(srcMoji, vbKatakana + vbWide) '全角カタカナにして『゛゜』を処理

  Application.Volatile
  For L = 1 To Len(kataMoji) 'カタカナ全角文字の母音と子音を作る
    elm = Mid(kataMoji, L, 1): Pot = InStr(chgTBL, elm)
    If 0 < Pot And Pot <= 6 Then
      wkBoin = Mid(Roma_Boin, Pot - 1, 1): wkSiin = "": elm = wkBoin & wkSiin
    ElseIf Pot > 6 Then
      wkBoin = Mid(chgTBL, Int((Pot - 1) / 6) * 6 + 1, 1)
      wkSiin = Mid(Roma_Boin, (Pot - 1) Mod 6, 1): elm = wkBoin & wkSiin
    Else
      If elm = "ン" Then elm = "N" '『ン』は特別処理
    End If
    RomaMoji = RomaMoji & elm
  Next
  RomaMoji = KomojiOkikae(RomaMoji, "ャ", "YA") '小文字『ャ』の処理
  RomaMoji = KomojiOkikae(RomaMoji, "ュ", "YU") '小文字『ュ』の処理
  RomaMoji = KomojiOkikae(RomaMoji, "ョ", "YO") '小文字『ョ』の処理
  For L = 2 To Len(RomaMoji) '小文字『ッ』の処理
    If Mid(RomaMoji, L - 1, 1) = "ッ" Then
      Mid(RomaMoji, L - 1, 1) = Mid(RomaMoji, L, 1)
    End If
  Next

  changeKatakana2Romaji = StrConv(RomaMoji, vbNarrow)
End Function

'カタカナ小文字の処理(ャュョ)
Public Function KomojiOkikae(Moji As String, komoji As String, Okikae As String)
  Dim kPot As Integer
  If InStr(Moji, komoji) > 0 Then
    Mid(Moji, InStr(Moji, komoji) - 1, 2) = Okikae
  End If
  KomojiOkikae = Moji
End Function
    • good
    • 0
この回答へのお礼

1回目に貼り付けたときに、おかしかったようです。最初からやり直したら出来ました。完璧です。ありがとうございました。

お礼日時:2004/02/28 17:06

懐かしいコードを見ました。

標準モジュールへの貼り付け方は、

ツール→マクロ→Visual Basic Editor でVBE画面に移り、挿入→標準モジュール で標準モジュールを挿入します。出てきたコードウインドウに下記マクロをコピーして貼り付けます。

No.118541の

ここから

Public Const Roma_Boin = "AIUEO"
Public Const Kata_S1 = "AアイウエオKカキクケコSサシスセソTタチツテトNナニヌネノ"

 :
 :
 :
  changeKatakana2Romaji = StrConv(RomaMoji, vbNarrow)
End Function

'カタカナ小文字の処理(ャュョ)
Public Function KomojiOkikae(Moji As String, komoji As String, Okikae As String)
  Dim kPot As Integer
  If InStr(Moji, komoji) > 0 Then
    Mid(Moji, InStr(Moji, komoji) - 1, 2) = Okikae
  End If
  KomojiOkikae = Moji
End Function

ここまで

この回答への補足

ありがとうございます。ご本人なんですね!
早速貼り付けました。そして=changeKatakana2Romaji(A1)を「B1」セルにいれたら「コンパイルエラー:SubまたはFanctionが定義されていません。のダイヤログボックスが出ました。もう少し教えていただけませんか?

補足日時:2004/02/28 15:49
    • good
    • 0
この回答へのお礼

出来ました。完璧です。ありがとうございました。

お礼日時:2004/02/28 17:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています