Sub МакросПроба()
Dim s As String, iEnd As Integer
Dim a1 As Integer, a2 As Integer, a3 As Integer, a4 As Integer
s = "Детали №№10-15 - левые и №№25-30 - правые"
a1 = CInt(InStrCifra(s, iEnd))
s = Right(s, Len(s) - iEnd + 1)
a2 = CInt(InStrCifra(s, iEnd))
s = Right(s, Len(s) - iEnd + 1)
a3 = CInt(InStrCifra(s, iEnd))
s = Right(s, Len(s) - iEnd + 1)
a4 = CInt(InStrCifra(s, iEnd))
End Sub
А вот сама функция:
Public Function InStrCifra(s As String, ByRef iEnd As Integer) As String
' Возвращает из строки s первую последовательность из цифр
' Например: из "ddd45dd34" - вернет 45
' после этого iEnd примет новое значение, равное последней найденной цифре
' в отобранном куске строки (в примере выше будет iEnd=5).
Dim i As Integer, exitBool As Boolean
InStrCifra = ""
exitBool = False
For i = 1 To Len(s)
If Asc(Mid(s, i, 1)) > 47 And Asc(Mid(s, i, 1)) < 58 Then
InStrCifra = InStrCifra & Mid(s, i, 1)
exitBool = True
Else
If exitBool Then
iEnd = i
Exit For
End If
End If
Next i
End Function
Выбор и пересчет цифр из алфавитно-цифровой строки
"Детали №№10-15 - левые и №№25-30 - правые"
отделить 10-15 и 25-30 и подсчитать общую сумму деталей.
какие пути решения этой проблемы могут быть?
Цитата:
Originally posted by ziv
Требуется на VBA(Excel)из строки:
"Детали №№10-15 - левые и №№25-30 - правые"
отделить 10-15 и 25-30 и подсчитать общую сумму деталей.
какие пути решения этой проблемы могут быть?
Требуется на VBA(Excel)из строки:
"Детали №№10-15 - левые и №№25-30 - правые"
отделить 10-15 и 25-30 и подсчитать общую сумму деталей.
какие пути решения этой проблемы могут быть?
Ну например так:
Код:
Что-то я про Asc() совсем забыл :)
А в чем разница в операциях со строковыми переменными между:
str=str1 & str2
str=str1 + str2
ведь результат один и тот же?
Цитата:
Originally posted by ziv
Спасибо.
Что-то я про Asc() совсем забыл :)
А в чем разница в операциях со строковыми переменными между:
str=str1 & str2
str=str1 + str2
ведь результат один и тот же?
Спасибо.
Что-то я про Asc() совсем забыл :)
А в чем разница в операциях со строковыми переменными между:
str=str1 & str2
str=str1 + str2
ведь результат один и тот же?
В данном случае никакой.
& - закреплен за операцией слияния со строковыми переменными, а
+ - имеет двоякое применение: арифм. сложение или слияние строк. пер.
Если у тебя str1 и str2 были бы типа Variant, то в зависимости от типа реальных данных в str1,2 можно ожидать либо сумму либо слитую строку - иногда это удобно, а иногда можно получить трудноуловимый глюк, если ты этого не ждешь.