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

Help!!! Помогите решить задачу по VBA MS Excel!

Отсортировать слова во введенной символьной строке по алфавиту. Результат вывести на экран. Ну очень нужно!)
Sub maria_sort()

Dim text1 As String
Dim text2 As String
Dim tmp As String

Dim words() As String

Dim i As Long
Dim j As Long
Dim n As Long

text1 = InputBox("Сортировка слов", "Введите предложение", "девочка ела очень вкусную кашу! ")
words() = Split(Trim(text1), " ") 'разбили предложение на слова и поместили их в массив

n = UBound(words()) 'размер полученного массива
'сортируем пузырьковым методом
For i = 1 To n - 1
For j = n - 1 To i Step -1
'по первой букве по коду ascii
If Asc(Left(words(j), 1)) < Asc(Left(words(j - 1), 1)) Then
tmp = words(j)
words(j) = words(j - 1)
words(j - 1) = tmp
End If
Next j
Next i
'собрали строку из массива
text2 = Join(words(), " ")

MsgBox "Введенная строка: " & text1 + Chr(13) + "Отсортированная строка: " & text2

End Sub

Sub marina_date()
Dim d1 As Date 'Дата, относительно которой ведется поиск

Dim dplus As Date 'ближайша последующая дата (воскресение)
Dim dminus As Date 'Ближайшая предыдущая дата (воскресение)

Dim CountPlus As Long 'элемент для приращения даты
Dim CountMinus As Long 'элемент для приращения даты

CountPlus = 0
CountMinus = 0

d1 = InputBox("Поиск ближайшего воскресенья", "Укажите дату", Date)
'MsgBox "Введенный день недели - " & Weekday(d1, vbMonday) & Chr(13) & Date

If Weekday(d1, vbMonday) <> 7 Then ' если сегодня не воскресенье

Do
CountPlus = CountPlus + 1 '
dplus = DateAdd("h", CountPlus, d1) 'смещаемся от базовой даты на CountPlus
'отрезков времени "h", т. е. часов

Loop Until (Weekday(dplus, vbMonday) = 7 And Abs(DateDiff("d", d1, dplus, vbMonday)) > 1)
'выход из цикла если новая дата это 7 день недели и не совпадает с введенной

'все аналогично, только отсчет ведется в другую сторону
Do
CountMinus = CountMinus + 1
dminus = DateAdd("h", -CountMinus, d1)
Loop Until (Weekday(dminus, vbMonday) = 7 And Abs(DateDiff("d", d1, dminus, vbMonday)) > 1)

'выводим дату воскресенья, до которого меньше часов
If CountPlus < CountMinus Then MsgBox "Ближайшее воскресенье - " & dplus Else MsgBox "Ближайшее воскресенье - " & dminus
Else
'это условие можно и убрать
MsgBox "Воскресенье - уже сегодня, все остальные - далеко"
End If
ЖМ
Жека Милев
1 249
Лучший ответ