Другие языки программирования и технологии

Как написать макрос для Word 2003 чтобы выполнял сортировку чисел в квадратных скобках?

Необходим макрос для сортировки числовых данных в квадратных скобках находящихся в строке документа Word.
Пример: Текс [4, 19, 2, 1, 6, 10] продолжение текста, необходимо после выполнения макроса получить Текст [1, 2, 4, 6, 10, 19] продолжение текста.
Или можно как нибудь переписать имеющийся макрос [ссылка заблокирована по решению администрации проекта]
(http : // wordexpert. ru / page / sortirovka - dannyx - v - stroke - po - alfavitu - dlya - word - 2007)
"Подскажите пожалуйста, как сделать сортировку в Word 2007 по алфавиту значений, находящихся в строчке? Например, вот такие значения в строчке - 63, 53а, 67, 73в, 75а, 69, 69б, 79в, 75б, 73г, 69в и т. д. "
Sub sortNumbers()
Dim oRng As Range
With Selection
.HomeKey wdLine
.MoveDown Unit:=wdLine, Count:=1, Extend:=wdExtend
Set oRng = .Range
End With
oRng.End = oRng.End - 1
oRng = Replace(oRng, ", ", Chr(13))
oRng.Sort ExcludeHeader:=False, FieldNumber:="Paragraphs", _
SortFieldType:=wdSortFieldAlphanumeric, SortOrder:=wdSortOrderAscending
oRng = Replace(oRng, Chr(13), ", ")
End Sub
Можно вот так сделать, только смотри, чтобы в скобках именно цифры были ))
Sub sort()
Dim chisla_s() As String
Dim x() As Single

l = Len(ActiveDocument.Range.Text)

For i = 1 To l
If ActiveDocument.Range.Characters(i) = "[" Then
start = i
Do While ActiveDocument.Range.Characters(i) <> "]"
i = i + 1
tempstr = tempstr + ActiveDocument.Range.Characters(i)

Loop
MsgBox tempstr
finish = i
tempstr = Left(tempstr, finish - (start + 1))
chisla_s() = Split(tempstr, ",")
n = UBound(chisla_s)
ReDim Preserve x(n + 1)

For k = 0 To n
x(k) = Val(chisla_s(k))
Next k
'-----------------------
For z = 1 To n '- 2
For j = n To z Step -1
If x(j - 1) > x(j) Then
tmp = x(j - 1)
x(j - 1) = x(j)
x(j) = tmp
End If
Next j
Next z
'--------------------------------
For z = 0 To n
If z <> n Then Buble = Buble & x(z) & ", " Else Buble = Buble & x(z)
Next z

Range(start, finish - 1).Select
Selection.Text = Buble
Buble = " "
End If

tempstr = ""
ReDim x(0)
ReDim chisla_s(0)
Next i

End Sub
Александр М
Александр М
1 249
Лучший ответ
Галымжан Рыскулбеков [2, 20, 1, 3, 10, 24, 56, 7, 19, 5, 74] отказывается сортировать и показывает ошибку
Sub sort()
Dim chisla_s() As String
Dim x() As Single

...

Range(Start, finish - 1).Select ' ошибка
Александр М Странно... У меня работает как часы мой вариант и не работает совершенно ЭТО(не найдены записи для сортировки).
И зачем такой огород городить было?
я точно незнаю но по моему следует обратить свой взор в стороны Visual Studio.
Александр М а зачем?))