Excel VBA質問箱 IV

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

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


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

【27334】英数字を半角にし、それ以外を全角にする... ももんが 05/8/5(金) 16:17 質問[未読]
【27336】Re:英数字を半角にし、それ以外を全角にす... ichinose 05/8/5(金) 17:17 発言[未読]
【27337】Re:英数字を半角にし、それ以外を全角にす... ichinose 05/8/5(金) 17:39 発言[未読]
【27397】Re:英数字を半角にし、それ以外を全角にす... ももんが 05/8/8(月) 9:33 お礼[未読]
【27394】Re:英数字を半角にし、それ以外を全角にす... ももんが 05/8/8(月) 9:23 お礼[未読]
【27338】Re:英数字を半角にし、それ以外を全角にす... でれすけ 05/8/5(金) 17:51 回答[未読]
【27395】Re:英数字を半角にし、それ以外を全角にす... ももんが 05/8/8(月) 9:23 お礼[未読]

【27334】英数字を半角にし、それ以外を全角にする...
質問  ももんが  - 05/8/5(金) 16:17 -

引用なし
パスワード
   次のような処理をしたいのですが、どうしたらよいでしょうか?
処理のしたい範囲は、特定のセルではなくシート上のデータすべてとお考えください。
データは次のようになっています。
漢字・ひらがな⇒当然全角
カタカナ⇒半角
英数字⇒全角
このデータを以下のように変換したいです。
漢字・ひらがな⇒当然全角のまま
カタカナ⇒全角
英数字⇒半角

まだマクロ初心者でお手数をおかけしますが、よろしくお願いいたします。

【27336】Re:英数字を半角にし、それ以外を全角に...
発言  ichinose  - 05/8/5(金) 17:17 -

引用なし
パスワード
   ▼ももんが さん:
こんにちは。

>次のような処理をしたいのですが、どうしたらよいでしょうか?
>処理のしたい範囲は、特定のセルではなくシート上のデータすべてとお考えください。
>データは次のようになっています。
>漢字・ひらがな⇒当然全角
>カタカナ⇒半角
>英数字⇒全角
>このデータを以下のように変換したいです。
>漢字・ひらがな⇒当然全角のまま
>カタカナ⇒全角
>英数字⇒半角
>
>まだマクロ初心者でお手数をおかけしますが、よろしくお願いいたします。

同じようなご質問がありました。

http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=7979;id=excel

参考にして下さい。

【27337】Re:英数字を半角にし、それ以外を全角に...
発言  ichinose  - 05/8/5(金) 17:39 -

引用なし
パスワード
   >>カタカナ⇒全角
もあったんですねえ・・・。
これは、正規表現の応用で可能なのですが・・・。


>
>http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=7979;id=excel

http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=18465;id=excel
こんな投稿もしてました。
継ぎ接ぎで申し訳ありませんが
(と言っても継ぎ接ぎできるからプロジャー分割しているんですが)

'=================================
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 = alph_cnv_narrow(.Value)
     .Value = kana_cnv(.Value, 4)
     End With
    Next
  Set regEx = Nothing
  Application.ScreenUpdating = True
End Sub
'=========================================================
Function alph_cnv_narrow(strng)
  regEx.Pattern = "([A-Z])+"
  regEx.IgnoreCase = True
  regEx.Global = True
  Set Matches = regEx.Execute(strng)
  alph_cnv_narrow = strng
  If Matches.Count > 0 Then
   For Each Match In Matches
     regEx.Pattern = Match.Value
     regEx.IgnoreCase = False
     alph_cnv_narrow = regEx.Replace(alph_cnv_narrow, StrConv(Match.Value, vbNarrow))
     Next
   End If
End Function
'==================================================================
Function kana_cnv(cnv_str, w_or_n As Long)
'指定された文字列のカタカナを全角又は、半角に変換する
'input---cnv_str---変換する文字列
'    w_or_n 変換指示 4-全角変換 8-半角変換
'output--kana_cnv 変換された文字列
  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 = 8 Then kana_cnv = Replace(kana_cnv, "ク", Chr(&H8168))
     Next
     End If
   End With
End Function

確認して下さい。

【27338】Re:英数字を半角にし、それ以外を全角に...
回答  でれすけ  - 05/8/5(金) 17:51 -

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

よろしければ、
ExcelFactory(http://excelfactory.net/)で
公開しているフリーソフト (Utility) 
http://excelfactory.net/freesoft/Tools.html
で拙作の「半角全角変換アドイン」をダウンロードして使ってみて下さい。

【27394】Re:英数字を半角にし、それ以外を全角に...
お礼  ももんが  - 05/8/8(月) 9:23 -

引用なし
パスワード
   ▼ichinose さん
そちらのリンク先は既に見てみましたが、
私にはちょっと理解できず・・・。
でも、早速の回答ありがとうございました。

【27395】Re:英数字を半角にし、それ以外を全角に...
お礼  ももんが  - 05/8/8(月) 9:23 -

引用なし
パスワード
   ▼でれすけ さん:
おはようございます。
自分の頭では理解はできていませんが、
操作としてできましたので問題はありません。
非常に助かりました。
ありがとうございました。

【27397】Re:英数字を半角にし、それ以外を全角に...
お礼  ももんが  - 05/8/8(月) 9:33 -

引用なし
パスワード
   ▼ichinose さん:
ありがとうございました。
確認してみましたが、まだまだ私には難しいようで・・・。
勉強して出直してきます。

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