Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2010, 00:47   #1
StudentofSUSU
Пользователь
 
Регистрация: 07.01.2010
Сообщений: 11
По умолчанию Определение типа ячейки.

И еще раз здравствуйте... Мне надо получить ASCII код символа. Выдает ошибку на отмеченной комментарием строке. Прошу помочь...
Суть задания - определить тип переменной в ячейке.
Sub Определение_типа()
Dim s As String
Dim i As Integer
Dim bool As Boolean
bool = True
s = [a1].Text
Range("A2").Select
ReDim s1(1 To Len(s))
For i = 1 To Len(s)
s1(i) = Mid(s, i, 1)
Next i
For i = 1 To Len(s)
If (Asc(s1(i)) > 47) & (Asc(s1(i) < 58)) Then 'Ошибка
bool = False
End If
Next i
If bool = False Then
Selection.FormulaR1C1 = "string"
Exit Sub
End If
End Sub
StudentofSUSU вне форума Ответить с цитированием
Старый 08.01.2010, 01:11   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Вот так будет работать:

Код:
Sub Определение_типа()
    Dim s As String
    Dim i As Integer
    Dim bool As Boolean
    bool = True
    s = [a1].Text
    Range("A2").Select
    ReDim s1(1 To Len(s))
    For i = 1 To Len(s)
        s1(i) = Mid(s, i, 1)
    Next i
    For i = 1 To Len(s)
        If Asc(s1(i)) > 47 And Asc(s1(i) < 58) Then bool = False
    Next i
    If bool = False Then
        Selection.FormulaR1C1 = "string"
        Exit Sub
    End If
End Sub
PS: И Вы для этого просили разбить строку на массив?
Надо сразу было говорить, для чего...

Ваш макрос можно записать чуть короче:
Код:
Sub Определение_типа2()
    [a2] = IIf(IsNumeric([a1].Text), "число", "строка")
End Sub
Ну или так, что то же самое:
Код:
Sub Определение_типа2()
    If IsNumeric([a1].Text) Then [a2] = "число" Else [a2] = "строка"
End Sub

А так можно убедиться, что в ячейке записаны только цифры:
(предыдущий вариант допускал ввод дробных и отрицательных чисел)
Код:
Sub Определение_типа3()
    txt = [a1].Text: If txt = "" Then [a2] = "пусто": Exit Sub
    If txt Like String(Len(txt), "#") Then [a2] = "число" Else [a2] = "строка"
End Sub

Последний раз редактировалось EducatedFool; 08.01.2010 в 01:16.
EducatedFool вне форума Ответить с цитированием
Старый 08.01.2010, 01:25   #3
StudentofSUSU
Пользователь
 
Регистрация: 07.01.2010
Сообщений: 11
По умолчанию

Ячейка может быть одного из четырех типов. Byte Long Int Double String Data. Вам не будет трудно написать код этого макроса?
StudentofSUSU вне форума Ответить с цитированием
Старый 08.01.2010, 01:29   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Цитата:
Ячейка может быть одного из четырех типов
Не угадали. Это переменная может быть 4-х и более типов.
С ячейкой всё несколько иначе, поэтому написать код не смогу.

К примеру, в ячейке записано число 15
К какому типу отнести ячейку? Подходит ко всем предложенным Вами типам...
EducatedFool вне форума Ответить с цитированием
Старый 08.01.2010, 02:09   #5
StudentofSUSU
Пользователь
 
Регистрация: 07.01.2010
Сообщений: 11
По умолчанию

Разобрался сам, спасибо за помощь.
StudentofSUSU вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение типа видеокарты (TASM) -danger- Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 24.03.2011 06:13
определение типа Mikimaus Общие вопросы C/C++ 6 22.11.2009 17:12
определение типа ЦП и ОЗУ ALEKS_STRELOK Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 01.04.2009 05:22
Определение типа переменной Игорь007 Общие вопросы C/C++ 7 10.01.2009 13:01
Определение типа курсора в сторонних приложениях. lazutov Win Api 1 11.09.2008 20:59