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

Помогите пожалуйста написать функцию в VBA

Допускается обработка исходной информации как текста.

Дано натуральное четырехзначное число. Определить, какая цифра
расположена левее – максимальная или минимальная
 Function MaxOrMinIsLeft(Number As Integer) As String 
Dim NumberAsString As String
Dim minDigit As Integer, maxDigit As Integer, posMinDigit As Integer, posMaxDigit As Integer
Dim curDigit As Integer, curPos As Integer
If Number < 1000 Or Number > 9999 Then MaxOrMinIsLeft = "Неверное число": Exit Function
NumberAsString = Number
posMinDigit = 0
posMaxDigit = 0
For curPos = 1 To 4
curDigit = Int(Mid(NumberAsString, curPos, 1))
If curDigit < minDigit Or posMinDigit = 0 Then
minDigit = curDigit
posMinDigit = curPos
End If
If curDigit > maxDigit Or posMaxDigit = 0 Then
maxDigit = curDigit
posMaxDigit = curPos
End If
Next curPos
If posMinDigit < posMaxDigit Then
MaxOrMinIsLeft = "Минимальная"
ElseIf posMinDigit > posMaxDigit Then
MaxOrMinIsLeft = "Максимальная"
Else
MaxOrMinIsLeft = "Цифры равны"
End If
End Function
Manash Ramazanov
Manash Ramazanov
12 091
Лучший ответ
Function MaxMinLeft(number As Long) As String

' Объявляем переменные
Dim digits() As Long ' массив для записи значений цифр числа
Dim max_digit As Long
Dim min_digit As Long

' Заполняем массив digits
ReDim digits(3)
digits(0) = Int(number / 1000)
digits(1) = Int((number Mod 1000) / 100)
digits(2) = Int((number Mod 100) / 10)
digits(3) = number Mod 10

max_digit = digits(0)
min_digit = digits(0)

' Ищем максимальную и минимальную цифры
For i = 0 To UBound(digits)
If digits(i) > max_digit Then
max_digit = digits(i)
End If

If digits(i) < min_digit Then
min_digit = digits(i)
End If

Next i

' Сравниваем максимальную и минимальную цифры
If digits(0) = max_digit Then
MaxMinLeft = "Максимальная"
ElseIf digits(0) = min_digit Then
MaxMinLeft = "Минимальная"

End Function
ИШ
Илья Шлык
3 794