Sub в частный sub - PullRequest
       4

Sub в частный sub

0 голосов
/ 31 октября 2019

Я написал макрос, который делает то, что мне нужно в отношении вывода. Тем не менее, было бы идеально, чтобы командная кнопка отображалась сразу же после открытия книги. Я предполагаю, что мне нужно сделать его частным, а не общедоступным, но я совершенно не знаком с этим. Кто-нибудь сможет подсказать, как я могу заставить это работать.

Кроме того, я получил исходный код, который обращается, когда я хочу выйти из пользовательской формы, или нажимаю «отменить» или «ок». Сможет ли кто-нибудь связать все это для меня?

enter image description here


Sub SerialSalesOrderComp()

Dim CodeSalesOrder As Variant
Dim TestSerial As Variant
Dim DeviceSerial As Variant
Dim SalesCodeLength As Integer
Dim TestSerialLength As Integer
Dim DeviceSerialLength As Integer
Dim RngD As Range

Range("D1:D3").Clear
StartHandler:
Do
CodeSalesOrder = InputBox("Please Scan Page...")

Range("D1").Value = CodeSalesOrder

SalesCodeLength = Len(CodeSalesOrder)

If SalesCodeLength = 13 Then Exit Do

MsgBox "Sales Code Requires Format"
MsgBox "Please Try Again"
GoTo StartHandler
Loop

StartHandler1:
Do
TestSerial = InputBox("Please Scan Test Page")

Range("D2").Value = TestSerial

TestSerialLength = Len(TestSerial)

If TestSerialLength = 11 Then Exit Do

MsgBox "Sales Code Requires Format YYY..."
MsgBox "Please Try Again"
GoTo StartHandler1

Loop

StartHandler2:
Do
DeviceSerial = InputBox("Please Scan")

Range("D3").Value = DeviceSerial

DeviceSerialLength = Len(DeviceSerial)

If DeviceSerialLength = 11 Then Exit Do
'Do Nothing


MsgBox "Serial Number Requires Format YYY..."
MsgBox "Please Try Again"
GoTo StartHandler2

Loop


SalesOrderNum = Left(CodeSalesOrder, InStr(CodeSalesOrder, "-") - 1)


If StrComp(TestSerial, DeviceSerial) = 0 Then


Dim TestSerialLetter As Variant
TestSerialNum1 = Left(Right(TestSerial, Len(TestSerial)), Len(TestSerial) - 8)
TestSerialLetter = Right(Left(TestSerialNum1, Len(TestSerialNum1)), Len(TestSerialNum1) - 2)


DeviceSerialNum1 = Left(Right(DeviceSerial, Len(DeviceSerial)), Len(DeviceSerial) - 8)
DeviceSerialNum = Right(Left(DeviceSerialNum1, Len(DeviceSerialNum1)), Len(DeviceSerialNum1) - 2)

Else:
MsgBox "Do Not Match - Report to Supervisor Immediately"
GoTo ExitHandler

End If

Dim RngNomenclature As Variant
Dim DeviceNumCode1 As String


RngNomenclature = ThisWorkbook.Sheets(1).Range("A2:B" & ThisWorkbook.Sheets(1).Cells(ThisWorkbook.Sheets(1).Rows.Count, 1).End(xlUp).Row).Value2

DeviceNumCode = Application.WorksheetFunction.VLookup(TestSerialLetter, RngNomenclature, 2, False)

If StrComp(DeviceNumCode, SalesOrderNum, vbBinaryCompare) = 0 Then

MsgBox "Device Label Type Verification Complete"

Else:
MsgBox "Do Not Match - Report to Supervisor Immediately"
GoTo ExitHandler

End If

ExitHandler:

End Sub


Public Property Get Cancelled() As Boolean
    Cancelled = IsCancelled
End Property
Private Sub OkButton_Click()
    Me.Hide
End Sub

Private Sub CancelButton_Click()
    OnCancel
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = VbQueryClose.vbFormControlMenu Then
        Cancel = True
        OnCancel
    End If
End Sub

Private Sub OnCancel()
    IsCancelled = True
    Me.Hide
End Sub

'Private IsCancelled As Boolean

Сам макрос используется для проверки совпадения трех строк в столбце D с определенным интеллектом символов.

В целом первые 3 буквы в ячейке D1 сравниваются с «числом» в столбце B. Это «число» в столбце B получается путем взятия третьего символа в ячейках D2 и D3. Этот 3-й символ сравнивается со столбцом А. Он находит его совпадающим, а затем берет соответствующий «номер» из столбца B в той же строке. Это «число» из столбца B затем сравнивается с первыми 3 буквами в ячейке D1. Если он находит совпадение, он проверяется. Если это не так, сообщите об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...