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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2011, 16:25   #1
johny_03
Форумчанин
 
Регистрация: 21.01.2011
Сообщений: 134
По умолчанию извлечь из ячейки только цифру

Имеется ячейка с текстом и цифрой, которая меняется.
Как построить условие, чтобы если в ячейке с текстом находится цифра:
1, то "Готово"
2, то "Выберите одно число"
3, то "Выберите одно число"

ну и по возможности продолжение:

4, то
Код:
    Range("C5:C7").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    Range("A1").Select
5, то
Код:
    Range("C5:C8").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    Range("A1").Select
в коде происходит выделение определенного количества ячеек рамкой

Может кто поможет хотя бы часть.
Заранее огромное спасибо!
johny_03 вне форума Ответить с цитированием
Старый 04.10.2011, 17:21   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Расположите этот код в Модуле листа,вбивайте данные в ячейку.Это лишь пример.отшлифуете под себя
Код:

Function W_d( s As Variant) As Integer
Dim bRes As Boolean
bRes = False
  Set RegExp = CreateObject("VBScript.RegExp")
  RegExp.Global = False
    RegExp.IgnoreCase = True
    RegExp.Pattern = "(\d{1})"
    bRes = RegExp.test(s)
        If bRes Then
            Set oMatches = RegExp.Execute(s)
            Set oMatch = oMatches(0)
    W_d = oMatch
         Exit Function
        End If
       W_d = 0
    End Function

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Ps As Integer
If Target.Cells.Count = 1 Then
Ps = W_d(Target.Value)
Select Case Ps
Case 1
MsgBox "Готово"
Case 2
MsgBox "Выберите одно число"
Case 3
MsgBox "Выберите одно число"
Case 4
'Ваш страшный код
Case 5
"Еще страшнее
End Select
End If
End Sub
Анализ,обработка данных Недорого

Последний раз редактировалось doober; 04.10.2011 в 18:13.
doober вне форума Ответить с цитированием
Старый 04.10.2011, 17:53   #3
johny_03
Форумчанин
 
Регистрация: 21.01.2011
Сообщений: 134
По умолчанию

не совсем понял как его подшлифовать под себя.
В данном случае выдает ошибку строки:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
и еще вопрос, как задать ячейку из которой он будет тянуть цифру?
johny_03 вне форума Ответить с цитированием
Старый 04.10.2011, 18:13   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

не изменится имя процедуры.больше гадать не буду
r-это заданная ячейка
Код:

Function W_d( s As Variant) As Integer
Dim bRes As Boolean
bRes = False
  Set RegExp = CreateObject("VBScript.RegExp")
  RegExp.Global = False
    RegExp.IgnoreCase = True
    RegExp.Pattern = "(\d{1})"
    bRes = RegExp.test(s)
        If bRes Then
            Set oMatches = RegExp.Execute(s)
            Set oMatch = oMatches(0)
    W_d = oMatch
         Exit Function
        End If
       W_d = 0
    End Function

Sub  Где_Пример_Файла(ByVal r As Range)
Dim Ps As Integer
Ps = W_d(r.Value)
Select Case Ps
Case 1
MsgBox "Готово"
Case 2
MsgBox "Выберите одно число"
Case 3
MsgBox "Выберите одно число"
Case 4
'Ваш страшный код
Case 5
"Еще страшнее
End Select

End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 04.10.2011, 18:29   #5
johny_03
Форумчанин
 
Регистрация: 21.01.2011
Сообщений: 134
По умолчанию

вот условие
Вложения
Тип файла: rar Книга1256.rar (4.3 Кб, 5 просмотров)
johny_03 вне форума Ответить с цитированием
Старый 04.10.2011, 18:56   #6
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

я понял.что ничего не понял.
Меняете в ячейке I5 ,контролируется I3
Вложения
Тип файла: rar return.rar (9.8 Кб, 7 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 04.10.2011, 19:28   #7
johny_03
Форумчанин
 
Регистрация: 21.01.2011
Сообщений: 134
По умолчанию

Спасибо за ответ, doober!
Хотел упростить, но сам себя запутал. В общем ячейку I5 можно убрать. А при открытии Листа чтобы активировался ваш код, который, как я понял, пишет соответствующее сообщение исходя из того, какая цифра в ячейке I3
johny_03 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как из ячейки содержащей текст и число извлечь только число? АННА-ЕАО Microsoft Office Excel 35 02.12.2016 23:16
Выделить только одну цифру dx2001 Microsoft Office Excel 6 30.05.2011 17:42
Все ли пары элементов линейного массива имеют только одну общую цифру в своей записи? с++ agent007 Visual C++ 3 07.07.2010 02:36
Как в одном файле взять цифру из ячейки другого файла? Hallo Microsoft Office Excel 3 26.05.2009 01:25
Найти первую цифру в данных ячейки.. kra183 Microsoft Office Excel 11 09.05.2008 01:35