2013-02-20 2 views
0

То, что я пытаюсь сделать, это приращение числа, а затем цикл вычесть первые 2 цифр по 1 и затем увеличивает остальное до первых 2 цифр = 0Изменение VBA код макроса для изменения номера

Так у меня есть M201001 станет m191002 и следующий будет m181003 до m011020

+2

Не уверен, что это по теме, но если вы хотите помочь с макросом вы работаете, это может быть полезно включить это в вашем вопросе ';-)' – halfer

+0

Вы уверены, что тег VB.NET верен? VB.NET! = VB (или VBA). – Tim

ответ

0

что вам нужно сделать, это разбить значение в 3 с использованием left, mid и right функции.

Затем выполните цикл, как вам это нужно. Я сам это пробовал, поэтому я обновляю свой ответ, как только я это сделаю.

Добавлено Код:

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 

Если вам нужно какое-либо объяснение, пожалуйста, спросите. Я буду рад объяснить.

+0

это потрясающе, так что моя способность! он даже вычисляет его внутри макроса, который, как я думаю, является тем, что отладочная печать, и с помощью ИТЕРАЦИИ хорошо теперь получил, что мне нужно поместить его туда, где он помещает их в лист, который им нравится играть с ним и размещать здесь здесь –

+0

I должен был опубликовать новый вопрос, так как правила состояния сайта делают это, что находится на этой странице http://stackoverflow.com/questions/14996655/changing-vba-macro-code-to-change-number-part-2 пытался заставить его работать почти там –

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 
+0

спасибо за вашу помощь, но мне нужно его, чтобы отделить номер, как макрос ниже –

+0

Мне пришлось опубликовать новый вопрос, так как правила состояния сайта делают это, что есть на этом страница http://stackoverflow.com/questions/14996655/changing-vba-macro-code-to-change-number-part-2 –

Смежные вопросы