Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/поиск любого числа в ActiveSheet.Name - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
поиск любого числа в ActiveSheet.Name
alex Дата: Суббота, 03.05.2014, 21:09 | Сообщение № 1
Группа: Гости
знатоки, подскажите процедуру VBA: поиск числа в ActiveSheet.Name
 
Ответить
Сообщениезнатоки, подскажите процедуру VBA: поиск числа в ActiveSheet.Name

Автор - alex
Дата добавления - 03.05.2014 в 21:09
alex3111 Дата: Суббота, 03.05.2014, 21:46 | Сообщение № 2
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 3 ±
Замечаний: 0% ±

Excel 2007
к сожалению файл выложить не могу - чистить от коммерческой тайны долго))).
процедура необходима для извлечения из имени листа например "66.запрос" натурального числа
и создания с его помощью имени Папки:

[vba]
Код
Private Sub CommandButton1_Click()
Dim aaaa As Integer
aaaa = ???????ActiveSheet.Name??????????
Const sPath$ = "C:\+запросы\запрос_№ & aaaa"
On Error Resume Next
GetAttr (sPath) ' если папка не существует, то будет ошибка
If Err Then MkDir sPath ' если была ошибка, то создать папку
End Sub
[/vba]
всем заранее спасибо.

пример файла, не судите строго: в VBA я ноль, поэтому получилось "лоскутное одеяло"
К сообщению приложен файл: 4552506.xlsm (38.9 Kb)


Сообщение отредактировал alex3111 - Суббота, 03.05.2014, 22:06
 
Ответить
Сообщениек сожалению файл выложить не могу - чистить от коммерческой тайны долго))).
процедура необходима для извлечения из имени листа например "66.запрос" натурального числа
и создания с его помощью имени Папки:

[vba]
Код
Private Sub CommandButton1_Click()
Dim aaaa As Integer
aaaa = ???????ActiveSheet.Name??????????
Const sPath$ = "C:\+запросы\запрос_№ & aaaa"
On Error Resume Next
GetAttr (sPath) ' если папка не существует, то будет ошибка
If Err Then MkDir sPath ' если была ошибка, то создать папку
End Sub
[/vba]
всем заранее спасибо.

пример файла, не судите строго: в VBA я ноль, поэтому получилось "лоскутное одеяло"

Автор - alex3111
Дата добавления - 03.05.2014 в 21:46
RAN Дата: Суббота, 03.05.2014, 22:09 | Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
выложить не могу - чистить от коммерческой тайны долго

Вы серьёзно считаете, что все бросятся создавать файл с CommandButton1, чтобы погадать - не это ли вам нужно?
В таком случае оптимист отдыхает! :o


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
выложить не могу - чистить от коммерческой тайны долго

Вы серьёзно считаете, что все бросятся создавать файл с CommandButton1, чтобы погадать - не это ли вам нужно?
В таком случае оптимист отдыхает! :o

Автор - RAN
Дата добавления - 03.05.2014 в 22:09
alex3111 Дата: Суббота, 03.05.2014, 22:13 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 3 ±
Замечаний: 0% ±

Excel 2007
В таком случае оптимист отдыхает!

Шеф, все исправил))) файлик выложил.

Я конечно по 4 строчкам кода не понял бы суть вопроса, но знатоки VBA ...


Сообщение отредактировал alex3111 - Суббота, 03.05.2014, 22:17
 
Ответить
Сообщение
В таком случае оптимист отдыхает!

Шеф, все исправил))) файлик выложил.

Я конечно по 4 строчкам кода не понял бы суть вопроса, но знатоки VBA ...

Автор - alex3111
Дата добавления - 03.05.2014 в 22:13
_Boroda_ Дата: Суббота, 03.05.2014, 22:27 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 16957
Репутация: 6631 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Так нужно?
[vba]
Код
sn_ = ActiveSheet.Name
aaaa = Left(sn_, WorksheetFunction.Find(".", sn_) - 1)
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТак нужно?
[vba]
Код
sn_ = ActiveSheet.Name
aaaa = Left(sn_, WorksheetFunction.Find(".", sn_) - 1)
[/vba]

Автор - _Boroda_
Дата добавления - 03.05.2014 в 22:27
alex3111 Дата: Суббота, 03.05.2014, 23:15 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 3 ±
Замечаний: 0% ±

Excel 2007
спасибо за вариант - число до "." извлекает без ошибок,
но, если возможно, хотелось бы чтобы искалось именно число,
дабы не править код вручную, т.к. текстовка листа № запроса может меняться, т.е. "." не обязательно будет.

Прошу еще помощи:
в строке переменная "aaaa" не хочет отображаться числом
[vba]
Код
Const sPath$ = "C:\+запросы\запрос_№ & aaaa"
[/vba]
подскажите пожалуйста
 
Ответить
Сообщениеспасибо за вариант - число до "." извлекает без ошибок,
но, если возможно, хотелось бы чтобы искалось именно число,
дабы не править код вручную, т.к. текстовка листа № запроса может меняться, т.е. "." не обязательно будет.

Прошу еще помощи:
в строке переменная "aaaa" не хочет отображаться числом
[vba]
Код
Const sPath$ = "C:\+запросы\запрос_№ & aaaa"
[/vba]
подскажите пожалуйста

Автор - alex3111
Дата добавления - 03.05.2014 в 23:15
_Boroda_ Дата: Суббота, 03.05.2014, 23:50 | Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 16957
Репутация: 6631 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
[vba]
Код
sPath$ = "C:\+запросы\запрос_№" & aaaa
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение[vba]
Код
sPath$ = "C:\+запросы\запрос_№" & aaaa
[/vba]

Автор - _Boroda_
Дата добавления - 03.05.2014 в 23:50
alex3111 Дата: Суббота, 03.05.2014, 23:55 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 3 ±
Замечаний: 0% ±

Excel 2007
спасибо _Boroda_, Вы кудесник)))

а с поиском именно числа поможете?


Сообщение отредактировал alex3111 - Суббота, 03.05.2014, 23:56
 
Ответить
Сообщениеспасибо _Boroda_, Вы кудесник)))

а с поиском именно числа поможете?

Автор - alex3111
Дата добавления - 03.05.2014 в 23:55
_Boroda_ Дата: Воскресенье, 04.05.2014, 00:16 | Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 16957
Репутация: 6631 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Так можно:
[vba]
Код
Sub ttt()
        sn_ = ActiveSheet.Name
        For i = 1 To Len(sn_)
            zn_ = Mid(sn_, i, 1)
            If zn_ Like "[0-9]" Then
                n_ = n_ & zn_
'Для выковыривания только первого числа, если их несколько (например, пп23оо46рр, а нужно вынуть 23)
'        Else
'            If -n_ Then Exit For
            End If
        Next
        sPath$ = "C:\+запросы\запрос_№" & n_
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТак можно:
[vba]
Код
Sub ttt()
        sn_ = ActiveSheet.Name
        For i = 1 To Len(sn_)
            zn_ = Mid(sn_, i, 1)
            If zn_ Like "[0-9]" Then
                n_ = n_ & zn_
'Для выковыривания только первого числа, если их несколько (например, пп23оо46рр, а нужно вынуть 23)
'        Else
'            If -n_ Then Exit For
            End If
        Next
        sPath$ = "C:\+запросы\запрос_№" & n_
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 04.05.2014 в 00:16
alex3111 Дата: Воскресенье, 04.05.2014, 02:13 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 3 ±
Замечаний: 0% ±

Excel 2007
а через Find и Numeric может получиться?
 
Ответить
Сообщениеа через Find и Numeric может получиться?

Автор - alex3111
Дата добавления - 04.05.2014 в 02:13
alex3111 Дата: Воскресенье, 04.05.2014, 03:15 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 3 ±
Замечаний: 0% ±

Excel 2007
в ActiveSheet.Name. Не прокатит?

Сорри за глупые вопросы, я же говорю в VBA ноль.


Сообщение отредактировал alex3111 - Воскресенье, 04.05.2014, 03:16
 
Ответить
Сообщениев ActiveSheet.Name. Не прокатит?

Сорри за глупые вопросы, я же говорю в VBA ноль.

Автор - alex3111
Дата добавления - 04.05.2014 в 03:15
_Boroda_ Дата: Воскресенье, 04.05.2014, 04:33 | Сообщение № 12
Группа: Админы
Ранг: Местный житель
Сообщений: 16957
Репутация: 6631 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
в ActiveSheet.Name.

Это-то понятно. А вот ЧТО Вы там искать хотите?
Я просот стараюсь сделать так, чтобы не я Вам ответ на блюдечке дал, а Вы самостоятельно ответили на собственный вопрос.
Вот смотрите - у Вас есть имя листа "ааа767ккк387ллл", Вам нужно вынуть оттуда 767. Причем, Вы не знаете заранее, какие это будут цифры. Финд подразумевает, что Вы четко укажете ему, что нужно искать (где - мы знаем). Так вот, вопрос - что Вы хотите поставить Финду в первый аргумент, чтобы он его искал?
Теоретически можно пробежаться циклом по числам от 0 до 9 и посмотреть, что найдется, но как Вы будете искать вторую семерку в 767? Конечно, и это можно, но зачем?


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
в ActiveSheet.Name.

Это-то понятно. А вот ЧТО Вы там искать хотите?
Я просот стараюсь сделать так, чтобы не я Вам ответ на блюдечке дал, а Вы самостоятельно ответили на собственный вопрос.
Вот смотрите - у Вас есть имя листа "ааа767ккк387ллл", Вам нужно вынуть оттуда 767. Причем, Вы не знаете заранее, какие это будут цифры. Финд подразумевает, что Вы четко укажете ему, что нужно искать (где - мы знаем). Так вот, вопрос - что Вы хотите поставить Финду в первый аргумент, чтобы он его искал?
Теоретически можно пробежаться циклом по числам от 0 до 9 и посмотреть, что найдется, но как Вы будете искать вторую семерку в 767? Конечно, и это можно, но зачем?

Автор - _Boroda_
Дата добавления - 04.05.2014 в 04:33
Wasilich Дата: Воскресенье, 04.05.2014, 14:33 | Сообщение № 13
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Саша, в коде (сообщение 10), видимо, Exit sub надо исправить на Exit for.
Еще вариант для примера.
К сообщению приложен файл: alex3111.xls (24.5 Kb)


Сообщение отредактировал Wasilic - Воскресенье, 04.05.2014, 14:53
 
Ответить
СообщениеСаша, в коде (сообщение 10), видимо, Exit sub надо исправить на Exit for.
Еще вариант для примера.

Автор - Wasilich
Дата добавления - 04.05.2014 в 14:33
ikki Дата: Воскресенье, 04.05.2014, 22:15 | Сообщение № 14
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
для разнообразия :)
[vba]
Код
Sub t()
      With CreateObject("vbscript.regexp")
          .Pattern = "\d+"
          MsgBox .Execute(ActiveSheet.Name)(0)
      End With
End Sub
[/vba]


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki


Сообщение отредактировал ikki - Воскресенье, 04.05.2014, 22:16
 
Ответить
Сообщениедля разнообразия :)
[vba]
Код
Sub t()
      With CreateObject("vbscript.regexp")
          .Pattern = "\d+"
          MsgBox .Execute(ActiveSheet.Name)(0)
      End With
End Sub
[/vba]

Автор - ikki
Дата добавления - 04.05.2014 в 22:15
_Boroda_ Дата: Воскресенье, 04.05.2014, 22:31 | Сообщение № 15
Группа: Админы
Ранг: Местный житель
Сообщений: 16957
Репутация: 6631 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
видимо, Exit sub надо исправить на Exit for


Wasilic, Конечно, спасибо, поправил


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
видимо, Exit sub надо исправить на Exit for


Wasilic, Конечно, спасибо, поправил

Автор - _Boroda_
Дата добавления - 04.05.2014 в 22:31
alex3111 Дата: Среда, 07.05.2014, 23:23 | Сообщение № 16
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 3 ±
Замечаний: 0% ±

Excel 2007
Всем спасибо за помощь и участие. Решил для программы стабильнее будет не искать в названии листа, а вшить число в ячейку на текущем листе.
 
Ответить
СообщениеВсем спасибо за помощь и участие. Решил для программы стабильнее будет не искать в названии листа, а вшить число в ячейку на текущем листе.

Автор - alex3111
Дата добавления - 07.05.2014 в 23:23
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!