Страница 1 из 1
Замена знака тире в строке на числа...
Добавлено: 27 мар 2010, 19:35
Busine2009
Например, в Word в диалоговое окно печать вводим 1-30, что означает распечатать страницы с 1 по 30.
Я с помощью inputbox получаю такую строку 1-30, как заполнить остальные цифры 2, 3, 4 и до 29?
Re: Замена знака тире в строке на числа...
Добавлено: 27 мар 2010, 23:15
IceFlame
Что значит заполнить? Получить строку вида "1,2,3,...30"?
Re: Замена знака тире в строке на числа...
Добавлено: 28 мар 2010, 09:30
Busine2009
IceFlame
да.
Re: Замена знака тире в строке на числа...
Добавлено: 30 мар 2010, 23:05
AlexZZZ
Попробуйте так:
Код: Выделить всё
Sub RRR()
Dim Str As String, Arr() As String, n As Long, _
nn As Long, sStr As String, i As Long
On Error GoTo lbl
Str = InputBox("Введите страницы печати: ")
Arr = Split(Str, "-")
n = Val(Arr(0))
nn = Val(Arr(1))
sStr = n
For i = n + 1 To nn
sStr = sStr & "," & i
Next i
MsgBox sStr
Exit Sub
lbl:
MsgBox "Ошибка данных!"
End Sub
Re: Замена знака тире в строке на числа...
Добавлено: 31 мар 2010, 21:04
Busine2009
AlexZZZ
я ещё не пробовал твой код, а как быть в этой ситуации: 1, 4, 5, 6-30, 40, 41, 43-60?
Re: Замена знака тире в строке на числа...
Добавлено: 31 мар 2010, 23:28
AlexZZZ
Однако...
Тогда так:
Код: Выделить всё
Sub SSS()
Dim Arr() As String, sStr As String, _
i As Long, Str As String
On Error GoTo lbl
sStr = InputBox("Введите страницы печати: ")
Arr = Split(sStr, ",")
For i = 0 To UBound(Arr)
If InStr(1, Arr(i), "-", vbBinaryCompare) > 0 Then
If Len(Str) > 0 Then
Str = Str & "," & RRR(Replace(Arr(i), " ", ""))
Else
Str = RRR(Replace(Arr(i), " ", ""))
End If
Else
If Len(Str) > 0 Then
Str = Str & "," & Replace(Val(Arr(i)), " ", "")
Else
Str = Replace(Val(Arr(i)), " ", "")
End If
End If
Next i
'Макрос печати
MsgBox Str
Exit Sub
lbl:
MsgBox "Ошибка данных!"
End Sub
Function RRR(Str As String)
Dim Arr() As String, n As Long, _
nn As Long, sStr As String, i As Long
On Error GoTo lbl
Arr = Split(Str, "-")
n = Val(Arr(0))
nn = Val(Arr(1))
sStr = n
For i = n + 1 To nn
sStr = sStr & "," & i
Next i
RRR = sStr
Exit Function
lbl:
MsgBox "Ошибка данных!"
End Function
Re: Замена знака тире в строке на числа...
Добавлено: 01 апр 2010, 21:36
Busine2009
AlexZZZ
я проанализирую твой код в выходные, потому напишу, что у меня получилось.
Но всё равно спасибо.