Заполнение нулями при печати и изменении значений - PullRequest
0 голосов
/ 08 мая 2019

Я новичок здесь, но надеюсь, что вы все можете помочь с решением, над которым я работаю.Я работаю над документом Excel и настраиваю макрос.Это работает, пока я не попытаюсь добавить некоторую логику, чтобы дополнить число нулями.

Я пытаюсь заполнить нули в ячейке выбора, где метки меньше 10, а затем добавить мое целое число.Если метки больше 9, я хочу добавить один меньше нуля, аналогично, когда они больше 99, на один меньше тех, у которых 10 или больше.

Моя программа спрашивает пользователя, сколько меток они хотятprint (1-999).

Я пытался добавить оператор IF в мой For I = 1 To LabelCount:

    For I = 1 To LabelCount
      If I < 10 Then
      ActiveSheet.Range("C20").Value = "C906BGM0880000" & I
      ActiveSheet.PrintPreview
      Else
      ActiveSheet.Range("C20").Value = "C906BGM088000T" & I
      ActiveSheet.PrintPreview
      End If
    Next

Выше не сработало.

Sub IncrementPrint()
'updateby Tyler Garretson
    Dim LabelCount As Variant
    Dim xScreen As Boolean
    Dim I As Long
    On Error Resume Next
LInput:
    LabelCount = Application.InputBox("Please enter the number of copies you want to print:")
    If TypeName(LabelCount) = "Boolean" Then Exit Sub
    If (ActiveSheet.Range("F11").Value = "") Or (ActiveSheet.Range("F14").Value = "") Or (ActiveSheet.Range("C18").Value = "") Then
        MsgBox "Error Occurred.  Please enter values for Route, Stop, and Destination Name", vbExclamation
    ElseIf (LabelCount = "") Or (Not IsNumeric(LabelCount)) Or (LabelCount < 1) Or (LabelCount > 999) Then
        MsgBox "Error Occurred. Please enter 1 - 999", vbExclamation
    ElseIf LabelCount < 10 Then
        xScreen = Application.ScreenUpdating
        Application.ScreenUpdating = False
        For I = 1 To LabelCount
          ActiveSheet.Range("C20").Value = "C906BGM0880000" & I
          ActiveSheet.PrintPreview
        Next

        ActiveSheet.Range("C20").ClearContents
        Application.ScreenUpdating = xScreen
    End If
End Sub

Пользователь вводит 11 этикеток, которые он или она желает напечатать, программа печатает следующее:

Label1: ABC00001
Label2: ABC00002
Label3: ABC00003
Label4: ABC00004
Label5: ABC00005
Label6: ABC00006
Label7: ABC00007
Label8: ABC00008
Label9: ABC00009
Label10: ABC00010
Label11: ABC00011

Ответы [ 2 ]

2 голосов
/ 09 мая 2019

Требуется команда Форматировать - Формат (1, «00000») = 00001

Формат (123, "00000") = 00123

0 голосов
/ 09 мая 2019

'Это может быть основой того, что вам нужно

for a = 1 to 1000
   b = right("0000000000" & a,8)  ' B will always be 8 long and paaded left with 0's
next a

Это хорошо работает и с текстовым префиксом

for a = 1 to 1000
   c = "XYZ" & right("0000000000" & a,8)
next a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...