VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2004/12/05(Sun) 12:20
投稿者LESIA
Eメール
URL
タイトルRe: 英数字混合の計算方法

> こんばんは。(^^)v
> 毎回、皆様方のアドバイスを参考にさせてもらっている、西田と申します。
> どうか、皆様方の良きアドバイス、お願いします。
>
> 実は、タイトルにも記載してるのですが、英数字混合の計算が出来なくて困っています。
> この英数字に+1ずつ足していって、計算を行いたい。
> ※但し、”9”の次は ”A”、”Z”の次は ”0”と計算したい。
>
> 例えば、3桁の英数字があると仮定します。
> 199 ⇒ 199+1=19A
> 19Z ⇒ 19Z+1=1A0
> 1ZZ ⇒ 1ZZ+1=200 という風に計算させたいのです。
>
> どなたか、英数字混合でしかもある程度制限付きの計算方法が分かる方がおられましたら、
> どうか、アドバイスして頂きたい。
> よろしくお願いします。

英数字混合というより36進数の計算ですね。
ただ1足すだけでしたらこんな感じでも出来ます。

Private Sub Command1_Click()
    Dim strNumber As String
    Dim i As Integer
    Dim intC As Integer
    Dim intAdd As Integer
    
    strNumber = "1ZZ"
    strNumber = StrConv(strNumber, vbUpperCase) '大文字に変換
    intAdd = 1
    For i = Len(strNumber) To 1 Step -1
        intC = Asc(Mid$(strNumber, i, 1))
        If intAdd = 1 Then
            Select Case intC
            Case vbKey0 To vbKey8
                Mid$(strNumber, i, 1) = Chr$(intC + intAdd)
                intAdd = 0
            Case vbKey9
                Mid$(strNumber, i, 1) = "A"
                intAdd = 0
            Case vbKeyA To vbKeyY
                Mid$(strNumber, i, 1) = Chr$(intC + intAdd)
                intAdd = 0
            Case vbKeyZ
                Mid$(strNumber, i, 1) = "0"
                intAdd = 1
            End Select
        End If
    Next i
    
    MsgBox strNumber
End Sub


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -