Excel VBA質問箱 IV

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

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


33172 / 76733 ←次へ | 前へ→

【48785】Re:変則進数の処理について 追伸
お礼  よね  - 07/5/8(火) 17:00 -

引用なし
パスワード
   ichinose さん

返信遅れまして、また拙い日本語で説明が至らず申し訳ございません。

すごいプログラムですね・・・理解するのに時間がかかりそうですが
一つ一つ自分のものにしていきたいと思います。
ちなみに
rightつかって下1桁を出して、
select caseつかって
1だったら2
2だったら3
3だったら4・・・・
という感じの文を書いたら
膨大な量になってしまいました・・・
勉強してきます。ありがとうございました。


>>わからないのは、
>>>>実は変則30進法でして・・・
>>>>0,1,2,3,4,5,6,7,8,9,a,c,d,e,f,g,h,j,k,m,n,p,r,t,u,v,w,x,y
>このとおりだとした場合の簡単なサンプルです。
>
>
>新規ブックの標準モジュールに
>'==================================================================
>Option Explicit
>  Private arefarray As Variant
>  Private a_edvalue As String
>  Private a_idx() As Long
>'===================================================================
>Sub abnor30_init(ByVal stvalue As String, ByVal edvalue As String)
>  Dim g0 As Long
>  Erase a_idx()
>  arefarray = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", _
>       "a", "c", "d", "e", "f", "g", "h", "j", _
>       "k", "m", "n", "p", "r", "t", "u", "v", "w", "x", "y")
>  a_edvalue = Trim(edvalue)
>  ReDim a_idx(1 To Len(Trim(edvalue)))
>  For g0 = 1 To Len(Trim(edvalue))
>    a_idx(g0) = -1
>    Next
>  For g0 = 1 To Len(Trim(stvalue))
>    a_idx(UBound(a_idx) - g0 + 1) = Application.Match(LCase(Mid(stvalue, Len(stvalue) - g0 + 1, 1)), _
>                     arefarray, 0) - 1
>    Next
>End Sub
>'======================================================================
>Function abnor30_get(myvalue As String) As Long
>  Dim g0 As Long
>  abnor30_get = 0
>  For g0 = UBound(a_idx()) To LBound(a_idx()) Step -1
>    If a_idx(g0) + 1 <= UBound(arefarray) Then
>     a_idx(g0) = a_idx(g0) + 1
>     If a_idx(g0) = 0 Then a_idx(g0) = 1
>     Exit For
>    Else
>     a_idx(g0) = 0
>     End If
>    Next
>  myvalue = ""
>  On Error Resume Next
>  For g0 = LBound(a_idx()) To UBound(a_idx())
>    Err.Clear
>    myvalue = myvalue & arefarray(a_idx(g0))
>    If Err.Number <> 0 Then myvalue = ""
>    Next
>  If myvalue = LCase(a_edvalue) Then abnor30_get = 1
>  On Error GoTo 0
>End Function
>'=======================================================================
>Sub abnor30_term()
>  Erase arefarray
>  a_edvalue = ""
>  Erase a_idx()
>End Sub
>
>
>別の標準モジュールに
>'=================================================================
>Sub test()
>  Dim g0 As Long
>  Dim myvalue As String
>  Call abnor30_init("073X18050", "073X18099")
>  Cells(g0 + 1, 1).Value = "073X18050"
>  g0 = g0 + 1
>  Do While abnor30_get(myvalue) = 0
>    Cells(g0 + 1, 1).Value = UCase(myvalue)
>    g0 = g0 + 1
>    Loop
>  Cells(g0 + 1, 1).Value = UCase(myvalue)
>  Call abnor30_term
>End Sub
>
>
>として、testを実行してみてください
>
>アクティブシートのA列に
>
>073X18050
>073X18051
>073X18052
>073X18053
>073X18054
>073X18055
>073X18056
>073X18057
>・
>・
>・
>073X18099
>
>と羅列表示します。
>因みに上記の例だとセルA1からA126までデータが表示されました。
>
>このようなことですか?
>
>
>>
>>これがどうして30進数なのですか?
>>29しか文字はないですが・・・。
>>そこが変則の所以ですか?
>>>後は、この変則30進数の説明をしてください。

2 hits

【48706】変則進数の処理について よね 07/5/2(水) 18:04 質問
【48710】Re:変則進数の処理について ichinose 07/5/2(水) 20:42 発言
【48711】Re:変則進数の処理について 追伸 ichinose 07/5/2(水) 20:57 発言
【48713】Re:変則進数の処理について 追伸 ichinose 07/5/2(水) 22:16 発言
【48785】Re:変則進数の処理について 追伸 よね 07/5/8(火) 17:00 お礼

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