2013-02-21 2 views
0

я должен был открыть новый вопрос следующий предыдущий вопрос я должен был уменьшить и увеличить на единицу число, которое по ссылке нижеИзменение кода VBA макросов для изменения номера, часть 2

Changing VBA macro code to change number

это код, с которым я пытаюсь работать, и я получил его почти для работы, но где-то его пошло не так.

Bulkwks.[B5] является M20

historywks.[a2] время

historywks.[b2] это имя

historywks.[C2] является m201001

Sub bulkON_Click() 

    Dim trnwkbk As Workbook 
    Dim Bulkwks As Worksheet 
    Dim Deswkbk As Workbook 
    Dim LogNum As Range, LastNum, NewNum, 
    Dim historywks As Worksheet 

    Dim nextRow As Long 
    Dim lOR As Long 
    Dim myIn As String 
    Dim myLeft As String 
    Dim myMid As Integer, myRight As Integer, i As Integer 
    Dim myOut As String 

    Set trnwkbk = Workbooks("Transport.xls") 
    Set Bulkwks = trnwkbk.Worksheets("Bulk") 

    lOR = MsgBox("Have you selected the right MIS or HUB or PSA number?", vbQuestion + vbYesNo, "Number Order") 
    If lOR = vbNo Then 
    MsgBox "Please select right Order Number" 
    Else 
    Application.ScreenUpdating = False 
    ' for testing i just made it post in test sheet in same workbook 
    'Set Deswkbk = Workbooks.Open("\\dunton01\Inspections\TRANSPORT\New_transport\data\Febuary_2013.xls") 
    'Set historywks = Deswkbk.Worksheets("Data") 
    Set historywks = Worksheets("test") 


    Set LogNum = historywks.[C2] 


    With historywks 
      nextRow = .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0).Row 
    End With 

    If LogNum(2, 1) = "" Then 
     LastNum = LogNum 
    Else 
     LastNum = LogNum(LogNum.End(xlDown).Row - 1, 1) 
    End If 

    NewNum = Bulkwks.[B5] & Val(Mid(LastNum, 2)) + 1 

    If LogNum(2, 1) = "" Then 
     LogNum(2, 1) = NewNum 

    Else 

    myIn = LogNum 
    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 

    With historywks 
      'enter date and time stamp in record 
      With .Cells(nextRow, "A") 
       .Value = Now 
       .NumberFormat = "mm/dd/yyyy hh:mm:ss" 
      End With 

      'enter user name in column B 
      .Cells(nextRow, "B").Value = Application.UserName 
      .Cells(nextRow, "C").Value = myIn 
    End With ' for testing i just disabled this Deswkbk.save 
    Loop 
    ' for testing i just disabled this 
    'Deswkbk.Close savechanges:=True 
    Application.ScreenUpdating = True 

    Bulkwks.[E3] = NewNum 

    End If 

    ' for testing i just disabled this 
    'Call File_In_Network_Folder 

    End If 
    End Sub 
+0

Что не работает? – glh

ответ

1

Вам нужно использовать переменную myOut.

.Cells(nextRow, "C").Value = myOut