0

私がやろうとしているのは、数値をインクリメントしてから、ループして最初の桁を減算し、最初の2桁に1 なるまで残りをインクリメントすることです2=0

だから私はM201001なりm191002、次はm181003それまでm011020

4

2 に答える 2

0

あなたがする必要があるのはleft、 、midおよびright関数を使用して値を 3 つに分割することです。

次に、必要に応じてループを実行します。私はそれを自分で試しているので、そうしたら答えを更新します。

追加されたコード:

Sub Testing()

    Dim myIn As String
    myIn = "M201001"

    Dim myLeft As String
    Dim myMid As Integer, myRight As Integer, i As Integer
    Dim myOut As String
    myLeft = Left(myIn, 1)
    myMid = CInt(Mid(myIn, 2, 2))
    myRight = CInt(Right(myIn, 4))
    myOut = myLeft & Format(myMid, "00") & Format(myRight, "0000")
    i = 0

    Debug.Print "IN:        " & myIn
    Debug.Print "BROKEN UP: " & myOut

    Do Until myMid = -1
        Debug.Print "ITERATION " & Format(i, "00") & ": " & myLeft & Format(myMid, "00") & Format(myRight, "0000")

        myMid = myMid - 1
        myRight = myRight + 1
        myOut = myLeft & Format(myMid, "00") & Format(myRight, "0000")
        i = i + 1
    Loop

End Sub

説明が必要な場合は、お尋ねください。喜んで説明させていただきます。

于 2013-02-21T02:20:19.417 に答える
0

これを試して

Function GetNextNumber(n As String) As Variant
    ' Validate input
    If Len(n) <> 7 Then
        GetNextNumber = xlErrNum
        Exit Function
    ElseIf Left$(n, 1) <> "M" Then
        GetNextNumber = CVErr(xlErrNum)
        Exit Function
    End If

    GetNextNumber = Left$(n, 1) & Format(val(Mid$(n, 2)) - 9999, "000000")

End Function

これを使ってテスト

Sub demo()
    Dim n As Variant

    n = "M201001"
    Debug.Print n
    Do
        n = GetNextNumber(CStr(n))
        If IsError(n) Then Exit Sub
        Debug.Print n
    Loop Until val(Mid$(n, 2)) <= 19999
End Sub
于 2013-02-21T04:54:25.510 に答える