数字を桁ごとにマス目に入れる
 近ごろは確定申告書をはじめ、OCR対応の書類が増えてきましたね。ところが通常の印字だけでは、なかなか思うようにマス目に入りません。
 そこで、数字を桁ごとにとりだしマス目に入れる必要がでてきます。
 テーブルにある「数字1」「数字2」「数字3」「数字4」をそれぞれマス目に入れる方法です。
モジュールにPublic Functionを下記のように記述します。
Public Function sk(suuji, keta) As Variant

Dim moto As Variant
moto = Int(Nz(suuji) * 0.1 ^ (keta - 1))

    If keta > 9 Or keta < 1 Then
     Exit Function
    End If

    If moto = 0 Then
      If Nz(suuji, 0) = 0 And keta = 1 Then
       sk = 0
      Else
       sk = Null
      End If
    Else
      sk = Right(moto, 1)
    End If

End Function
 ファンクションに任意の名前をつけます。短い方がいいのでここでは「sk」とします。
 引数に「suuji」と「keta」としましたが、それぞれ数字や桁を指定します。
また、データの型のはバリアント型を用いることにより、より柔軟な方法でデータを処理できるので、ここではバリアント型を用います。
計算のもとになる部分を「moto」として宣言します。
「moto」は(数字)*(0.1の桁-1乗)を意味します。
つまり桁が3桁目であれば、「0.1の2乗で0.01」となり
「1234」という数字あれば「1234*(0.1)の2乗」で「12.34」となるわけです。
ここではIntで整数化しているので12ということになります。
次に桁は1〜9桁まで(これは任意に指定できます)を設定します。
あとは
もしmotoが0だったら
そのなかでも数字が0で1桁目だったら
skは0
でなければ空白
じゃなければ、skは、整数化されたmotoの右から1番目ですよ。

という形になります。
したがって前例の「1234」という数字の3桁目は、整数化されたmotoの右から1番目
ですから「12」のなかの「2」ということになります。
あとは、数字をもとにレポートを作成し、テキストボックスのコントロールソースにそれぞれ、=sk([数字1],6) =sk([数字1],5)...のように入れていけば完成です。