VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

リンク元へ戻ります。 文字列操作関係のメニュー
1.アラビア数字を漢数字に変換
2.VB6.0 からの文字列関数の使用例
3.半角カタカナだけを全角カタカナに変換
4.検索・置換をする
5. NullChar(Chr(0))文字以降を消去する
6.文字列を指定の幅にカット(漢字分断回避)
7.半角・全角文字の判定をする
8.文字列を(左・中央・右)揃え表示する
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.その他、当サイト内に掲載の文字列操作に関するサンプル


1.アラビア数字を漢数字に変換
1.アラビア数字←→漢数字に変換する(数字のみ半角・全角変換もOK)
2.数字を色んな漢数字に変換する(1234→壱阡弐百参拾四 他)
3. 
4. 
5. 
6. 

 下記プログラムコードに関する補足・注意事項 
動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6)
Option :[Option Explicit]
参照設定:Microsoft Excel *.* ObjectLibrary / Microsoft Scripting Runtime 参照設定方法参照
使用 API:
なし
その他 :
    :
このページのトップへ移動します。 1.アラビア数字←→漢数字に変換する(数字のみ半角・全角変換もOK)

Option Explicit   'SampleNo:006  2002.04.17   @ 2006.12.28

Private Function fKansujToArabia(ByVal MyString As String, _
                ByVal ChangeNo As Long) As String
  Dim Table(1 To 3) As String
  Dim Icount    As Long
  Dim Location   As Long
  Dim strTemp    As String
  strTemp = MyString
  Table(1) = "0123456789-0123456789-〇一二三四五六七八九ー"
  Table(2) = "0123456789-"
  Table(3) = "〇一二三四五六七八九ー"
  For Icount = 1 To Len(strTemp)
    Location = InStr(Table(1), Mid$(strTemp, Icount, 1))
    If Location Then
      Select Case ChangeNo
        Case 4     '半角だけ全角に(漢数字除く)
          If Location <= 12 Then
            Mid$(strTemp, Icount, 1) = Mid$(Table(2), Location, 1)
          End If
        Case 5     '全角だけ半角に(漢数字除く)
          If Location >= 12 And Location <= 22 Then
            Location = Location - 11
            Mid$(strTemp, Icount, 1) = Mid$(Table(1), Location, 1)
          End If
        Case 1 To 3   '1=全半角 2=全全角 3=全漢数字
          If Location >= 12 Then Location = Location - 11
          If Location >= 12 Then Location = Location - 11
          If Location >= 1 Then
            Mid$(strTemp, Icount, 1) = _
                  Mid$(Table(ChangeNo), Location, 1)
          End If
      End Select
    End If
  Next Icount
  fKansujToArabia = strTemp
End Function


Private Sub Command1_Click()
  On Error Resume Next
  Dim SelectNo As Long
  '文字列の入力チェック
  If Len(Trim$(Text1.Text)) = 0 Then
    Beep
    Exit Sub
  End If
  '長整数型に変換する
  SelectNo = CLng(Text3.Text)
  If Err.Number Then Beep: Exit Sub
  Text2.Text = fKansujToArabia(Text1.Text, SelectNo)
End Sub


Private Sub Text3_KeyPress(KeyAscii As Integer)
  ' 1~5の範囲の入力制限
  If KeyAscii >= 32 And KeyAscii < 49 Or KeyAscii > 53 Then
    Beep           'エラー音
    KeyAscii = 0       '入力キーを無効にする
  End If
End Sub


 図1.上記実行結果
 kansuj1.gif

このページのトップへ移動します。 2.数字を色んな漢数字に変換する(1234→壱阡弐百参拾四 他)
こちらは、Excel の機能を利用していますので、VB から Excel が操作できる事が条件となります。

Private Function fKansuji(ByVal lngArabicNumerals As Long, _
             ByVal
lngSelectNo As Long) As String
  On Error Resume Next
  Dim xlApp  As Excel.Application
  Dim xlBook As Excel.Workbook
  Dim xlSheet As Excel.Worksheet
  'Set xlApp = New Excel.Application
  'こちらでも可(どちらがいいかは解かりません)
  Set xlApp = CreateObject("Excel.Application")
  Set xlBook = xlApp.Workbooks.Add
  Set xlSheet = xlBook.Worksheets.Add
  'セル(A1)に数値を挿入
  xlSheet.Cells(1, 1).Value = lngArabicNumerals
  'Formula プロパティを使ってセルに式を挿入します。
  Select Case lngSelectNo
    Case 1   '千二百三十四に変換
    xlSheet.Cells(1, 2).Formula = "=NUMBERSTRING(A1,1)"
    Case 2   '壱阡弐百参拾四に変換
    xlSheet.Cells(1, 2).Formula = "=NUMBERSTRING(A1,2)"
    Case 3   '一二三四に変換
    xlSheet.Cells(1, 2).Formula = "=NUMBERSTRING(A1,3)"
  End Select
  '変換結果を渡す
  fKansuji = xlSheet.Cells(1, 2)
  '保存時のダイログボックスを非表示に設定
  xlApp.DisplayAlerts = False
  'オブジェクトを解放します
  Set xlSheet = Nothing
  xlBook.Close      'Book を閉じる
  Set xlBook = Nothing
  xlApp.Quit       'Quit メソッドを使って Excel を終了します。
  Set xlApp = Nothing
End Function


Private Sub Command2_Click()
  On Error Resume Next
  Dim lngNumber As Long
  Dim SelectNo As Long
  '長整数型に変換する
  lngNumber = CLng(Text4.Text)
  SelectNo = CLng(Text6.Text)
  '文字が混じっていたら
  If Err.Number Then Beep: Exit Sub
  Text5.Text = fKansuji(lngNumber, SelectNo)
End Sub


Private Sub Text4_KeyPress(KeyAscii As Integer)
  If KeyAscii >= 32 And KeyAscii < 48 Or KeyAscii > 57 Then
    Beep           'エラー音
    KeyAscii = 0       '入力キーを無効にする
  End If
End Sub


Private Sub Text6_KeyPress(KeyAscii As Integer)
  ' 1~3の範囲の入力制限
  If KeyAscii >= 32 And KeyAscii < 49 Or KeyAscii > 51 Then
    Beep           'エラー音
    KeyAscii = 0       '入力キーを無効にする
  End If
End Sub

実行結果とコントロール類の貼り付け位置等は、図1.を参照して下さい。

処理としては数字(数値)だけを取り出し、エクセルの NUMBERSTRING 関数を使って漢数字に変換しているだけです。
NUMBERSTRING 関数はエクセルの隠し関数でヘルプにも載っていませんのであまり知られていないと思います。
最初の1回は少し時間がかかりますが次からは1秒以内で変換できるので使用には耐えられるかと思います。
これをVBだけでやろうとすると相当複雑になるかと思います。
使用例は簡略化していますので、実際はエラーチェック等を十分にして下さい。

このページのトップへ移動します。 3.


このページのトップへ移動します。 4.


このページのトップへ移動します。 5.


このページのトップへ移動します。 6.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)
文字列中の数字だけを全部半角に変換  文字列中の数字だけを全部全角に変換  文字列中の数字だけを全部漢数字に変換  文字列中の半角数字だけを全角に変換
文字列中の全角数字だけを半角に変換  数字を千二百三十四のように変換(Excelの関数を使って)  数字を壱千弐百参拾四のように変換(Excelの関数を使って)
数字を一二三四のように変換(Excelの関数を使って)


このページのトップへ移動します。