Excel VBA質問箱 IV

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

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


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

【18368】全角を半角に・・・ あさ 04/9/22(水) 10:39 質問[未読]
【18369】Re:全角を半角に・・・ IROC 04/9/22(水) 10:43 回答[未読]
【18371】Re:全角を半角に・・・ ぴかる 04/9/22(水) 11:09 発言[未読]
【18420】Re:全角を半角に・・・ ichinose 04/9/23(木) 10:16 回答[未読]
【18447】Re:全角を半角に・・・ ぴかる 04/9/24(金) 10:25 お礼[未読]
【18449】Re:全角を半角に・・・ Jaka 04/9/24(金) 12:10 発言[未読]
【18465】Re:全角を半角に・・・ ichinose 04/9/27(月) 10:30 発言[未読]

【18368】全角を半角に・・・
質問  あさ E-MAIL  - 04/9/22(水) 10:39 -

引用なし
パスワード
   全角カナを半角カナに、半角カナを全角カナに変換する事って出来るんでしょか?

資料の中の全カタカナを調べて、変換したいんですけど。。。

やっぱ無理ですかね?

【18369】Re:全角を半角に・・・
回答  IROC  - 04/9/22(水) 10:43 -

引用なし
パスワード
   strconv関数で出来ます。

【18371】Re:全角を半角に・・・
発言  ぴかる  - 04/9/22(水) 11:09 -

引用なし
パスワード
   あささん、こんにちは。

アルファベットも変換してもいいんなら、↓ソフトの文字変換機能で可能です。
但し、Win.XP・XL2002〜は、対応しておりません。
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=50;id=FAQ

【18420】Re:全角を半角に・・・
回答  ichinose  - 04/9/23(木) 10:16 -

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

以下のコードは、アクティブシートに入力されているセルの文字列の
半角カタカナを全角カタカナに変換するコード例です。
標準モジュールに

'=========================================================
Public Enum kanacnv
  kwide = 4
  knarrow = 8
End Enum
Dim regEx, Match, Matches
'==================================================
Sub main()
  Dim rng As Range
  Application.ScreenUpdating = False
  Set regEx = CreateObject("VBScript.RegExp")
  For Each rng In ActiveSheet.UsedRange
    With rng
     .Value = kana_cnv(.Value, kwide)
'               ↑全角を半角にする場合はkwideをknarrowに変更
     End With
    Next
  Set regEx = Nothing
  Application.ScreenUpdating = True
End Sub
'=========================================================
Function kana_cnv(cnv_str, w_or_n As kanacnv)
'指定された文字列のカタカナを全角又は、半角に変換する
'input---cnv_str---変換する文字列
'    w_or_n 変換指示 kwide-全角変換 knarrow-半角変換
'output--kana_cnv 変換された文字列
  With regEx
   If w_or_n = kwide Then
    .Pattern = "[。-゚]+"
   ElseIf w_or_n = knarrow Then
    .Pattern = "[ァ-ヶ]+"
   Else
    Exit Function
    End If
   .IgnoreCase = True
   .Global = True
   Set Matches = .Execute(cnv_str)
   kana_cnv = cnv_str
   If Matches.Count > 0 Then
    For Each Match In Matches
      .Pattern = Match.Value
      .IgnoreCase = False
      kana_cnv = regEx.Replace(kana_cnv, StrConv(Match.Value, w_or_n))
     Next
     End If
   End With
End Function

確認して下さい。

【18447】Re:全角を半角に・・・
お礼  ぴかる  - 04/9/24(金) 10:25 -

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

確認させて頂きました。カナのみの変換、バッチリですね。
ありがとうございます。勉強させて頂きますネ。わかるかにゃ?
新ピカつーるに使わさせて頂くかもしれません。その時は、
よろしくお願いします。
「その時って、いつやぁ!」っていう状況ですが・・・。

【18449】Re:全角を半角に・・・
発言  Jaka  - 04/9/24(金) 12:10 -

引用なし
パスワード
   ▼ぴかる さん:
>ichinoseさん、こんにちは。
>
>確認させて頂きました。カナのみの変換、バッチリですね。
>新ピカつーるに使わさせて頂くかもしれません。

こんにちは。
前に半角カタカナの濁音半濁音で、チョンボしたことが合ったんで試してみようとしたら、
97だと、Enumはコンパイルエラーで動きまへんでした。

【18465】Re:全角を半角に・・・
発言  ichinose  - 04/9/27(月) 10:30 -

引用なし
パスワード
   皆さん、おはようございます。
>>
>>確認させて頂きました。カナのみの変換、バッチリですね。
>>新ピカつーるに使わさせて頂くかもしれません。
>
>こんにちは。
>前に半角カタカナの濁音半濁音で、チョンボしたことが合ったんで試してみようとしたら、
>97だと、Enumはコンパイルエラーで動きまへんでした。
Enumステートメントって2000からだったんですねえ・・・。
ちょっとした訂正もあったので、再投稿です。

'===================================================================
'Public Enum kanacnv
'  kwide = 4
'  knarrow = 8
'End Enum
Dim regEx
'==================================================
Sub main() '全角に変換
  Dim rng As Range
  Application.ScreenUpdating = False
  Set regEx = CreateObject("VBScript.RegExp")
  For Each rng In ActiveSheet.UsedRange
    With rng
     .Value = kana_cnv(.Value, 4)
     End With
    Next
  Set regEx = Nothing
  Application.ScreenUpdating = True
End Sub
'=========================================================
Function kana_cnv(cnv_str, w_or_n As Long)
'指定された文字列のカタカナを全角又は、半角に変換する
'input---cnv_str---変換する文字列
'    w_or_n 変換指示 4-全角変換 8-半角変換
'output--kana_cnv 変換された文字列
  Dim Match, Matches '←これ、中の宣言でよかった
  With regEx
   If w_or_n = 4 Then
    .Pattern = "([。-、]|[ヲ-゚])+" '正規表現をちょっと変更
   ElseIf w_or_n = 8 Then
    .Pattern = "([ァ-ヶ]|゛|゜|、|。|「|」|ー)+"
   Else
    Exit Function
    End If
   .IgnoreCase = True
   .Global = True
   Set Matches = .Execute(cnv_str)
   kana_cnv = cnv_str
   If Matches.Count > 0 Then
    For Each Match In Matches
      .Pattern = Match.Value
      .IgnoreCase = False
      kana_cnv = regEx.Replace(kana_cnv, StrConv(Match.Value, w_or_n))
      If w_or_n = kwide Then kana_cnv = Replace(kana_cnv, "ク", Chr(&H8168))
     Next
     End If
   End With
  Set Match = Nothing
  Set Matches = Nothing
End Function

これ、「””」や「’」も入れるという仕様だと工夫が必要ですね!!
(今回は、カナということで入れてないですが)

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