Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 След.
Неправильная строка шаблона
 
Здравствуйте!

Написал вот такую функцию:
Код
Function ПОЛУЧИТЬСЕРИЙНИК(Строка As String)
    Dim str As String
    str = Trim(Строка)
    If Len(str) > 1 Then
        Do While str Like "*[;:-/]"
            str = Trim(Left(str, Len(str) - 1))
        Loop
        ПОЛУЧИТЬСЕРИЙНИК = Trim(Replace(Replace(Replace(Replace(Replace(Строка, "сч. №", "", , , vbTextCompare), "сч.№", "", , , vbTextCompare), "№", ""), ",", ""), ".", ""))
    End If
    ПОЛУЧИТЬСЕРИЙНИК = str

End Function
выполнение которой приводит к появлению ошибки Invalid pattern string на строке с do while.  Этот цикл удаляет странные символы в конце строки, но не в середине или в начале строки

Скажите, пожалуйста, в чем ошибка в шаблоне?

Разобрался, надо было так:
Код
Function ПОЛУЧИТЬСЕРИЙНИК(Строка As String)
    Dim str As String
    str = Trim(Строка)
    If Len(str) > 1 Then
        Do While str Like "*[;:-\/\\]" And Len(str) > 1
            str = Trim(Left(str, Len(str) - 1))
        Loop
        ПОЛУЧИТЬСЕРИЙНИК = Trim(Replace(Replace(Replace(Replace(Replace(Replace(str, "сч. №", "", , , vbTextCompare), "сч.№", "", , , vbTextCompare), "№", ""), ",", ""), ".", ""), "*", ""))
    Else
        ПОЛУЧИТЬСЕРИЙНИК = str
    End If
End Function
Изменено: borro - 15 Май 2019 12:36:30
желаю Вам счастья
Можно ли создать обработчик кнопки без применения программирования в VBA?
 
Всем спасибо!
желаю Вам счастья
Можно ли создать обработчик кнопки без применения программирования в VBA?
 
Здравствуйте!

Скажите, можно ли в Экселе создать кнопку, по нажатию которой будет открываться какая-то страница в дефолтном браузере и, при этом выполнить эту задачу без применения макросов? Чтобы не было необходимо сохранять файл с расширением xlsm или сохранять макрос в личной книге макросов.
желаю Вам счастья
Как сохранить число с нулями, обусловленными примененным форматированием?
 
skais675, спасибо!
желаю Вам счастья
Как сохранить число с нулями, обусловленными примененным форматированием?
 
Цитата
Сергей написал:
регулируйте ведущие нули изменением числа повторов, в отдельном столбце формируете что надо копируете куда надо как значения
Спасибо! А как формулой узнать число символов маске условного форматирования? Потому что число символов в форматировании разное от строки к строке.
Изменено: borro - 14 Май 2019 16:51:40
желаю Вам счастья
Как сохранить число с нулями, обусловленными примененным форматированием?
 
Цитата
БМВ написал:
И все это зависит от того что будет с этим дальше делаться.
Дальше эти значения будут импортироваться в БД, то есть нужны реальные нули, а не виртуальные, определенные форматированием
желаю Вам счастья
Как сохранить число с нулями, обусловленными примененным форматированием?
 
Здравствуйте!

В приложенном файле есть столбец А, значения в котором могут начинаться с нулей, которые не введены в качестве значений, а обусловлены примененным форматированием.
Скажите, как можно эти виртуальные нули превратить в реальные? Когда я копирую такие значения в другую книгу, и они там исчезают, чего не должно быть. Ищу решение, которое можно было применить сразу ко всему столбцу, поскольку подобные значения раскиданы по всему столбцу неравномерно. Можно на VBA.
желаю Вам счастья
Почему при копировании берутся и скрытые ячейки?
 
Всем спасибо!

Рабочий вариант получился такой:
Код
Sub PasteToVisible_2()
    Dim i As Long, j As Long, ii As Long, jj As Long, cnt As Long
    Dim crng As Range, prng As Range, sngarr As Range, rrow As Range, row As Range, arr As Range
     
    Set crng = Application.InputBox("Diapazon kopirowaniya", "Zapros", Type:=8).SpecialCells(xlCellTypeVisible)
    Set prng = Application.InputBox("Diapazon vstavki", "Zapros", Type:=8).SpecialCells(xlCellTypeVisible)
     
    i = crng.Columns.Count
    j = prng.Columns.Count
     
    If i <> j Then MsgBox "Raznyy razmer diapazonov: 'Stolbtse' - Konets", vbCritical: Exit Sub
     
    i = 0
    j = 0
     
    For Each sngarr In crng.Areas
        i = i + sngarr.Rows.Count
    Next
    For Each sngarr In prng.Areas
        j = j + sngarr.Rows.Count
    Next
     
    If i <> j Then MsgBox "Raznyy razmer diapazonov: 'Stroki' - Konets", vbCritical: Exit Sub
     
    j = 0
    ii = 0
    jj = 0
    cnt = 0
    Sheets(prng.Parent.Name).Select
     
    For Each sngarr In crng.Areas
        For Each rrow In sngarr.Rows
            j = j + 1
                For Each arr In prng.Areas
                    ii = ii + 1
                    For Each row In arr.Rows
                        jj = jj + 1
                        cnt = cnt + 1
                        If j = cnt Then
                            rrow.Copy prng.Areas(ii).Rows(jj).Cells(1)
                            Application.CutCopyMode = False
                            GoTo out
                        End If
                    Next row
                    jj = 0
                Next
out:
                ii = 0: jj = 0: cnt = 0
        Next
    Next
End Sub
желаю Вам счастья
Почему при копировании берутся и скрытые ячейки?
 
Цитата
Kuzmich написал:
А что именно не сработало?
Если воспользоваться вышеприведенным макросом с вашей конструкцией, то копируемые диапазон в части его видимых ячеек вставляется в место подстановки(диапазон вставки) подряд, включая срытые ячейки. А надо только в видимые
Изменено: borro - 28 Мар 2019 19:47:37
желаю Вам счастья
Почему при копировании берутся и скрытые ячейки?
 
С адресом ячеек тоже не вышло:
Код
Sub PasteToVisible()
    Dim copyrng As Range, pasterng As Range
    Dim cell As Range, i As Long, newrng As Range, s As String
    s = ""
      
   'запрашиваем у пользователя по очереди диапазоны копирования и вставки
    Set copyrng = Application.InputBox("Диапазон копирования", "Запрос", Type:=8)
    Set pasterng = Application.InputBox("Диапазон вставки", "Запрос", Type:=8)
  
    'проверяем, чтобы они были одинакового размера
    If pasterng.SpecialCells(xlCellTypeVisible).Cells.Count <> copyrng.SpecialCells(xlCellTypeVisible).Cells.Count Then
        MsgBox "Диапазоны копирования и вставки разного размера!", vbCritical
        Exit Sub
    End If
     
    i = 0
    For Each cell In copyrng
        If cell.EntireRow.Hidden = False Then
            If i = 0 Then
                s = cell.Address
            Else
                s = s & ", " & cell.Address
            End If
            i = i + 1
        End If
    Next
    
    i = 1
    For Each cell In pasterng
        If cell.EntireRow.Hidden = False Then
            cell.Value = Range(s).Cells(i).Value
            i = i + 1
        End If
    Next cell
End Sub

Почему-то конструкция Range(s).Cells(i).Value берет ячейки даже из скрытого диапазона, хотя адреса зашитые в s только из тех, что относятся к видимым ячейкам
желаю Вам счастья
Почему при копировании берутся и скрытые ячейки?
 
Kuzmich, так
Код
Sub PasteToVisible_1()
    Dim copyrng As Range, pasterng As Range
     
    Set copyrng = Application.InputBox("Kopirovaniye", "Zapros", Type:=8)
    Set pasterng = Application.InputBox("Vyberite tol'ko odnu yacheyku", "Zapros", Type:=8)
     
    copyrng.SpecialCells(xlCellTypeVisible).Copy pasterng.Cells(1, 1)
    Application.CutCopyMode = False
End Sub
?
Если да, то не сработало
желаю Вам счастья
Почему при копировании берутся и скрытые ячейки?
 
Попробовал и так:
Код
Sub PasteToVisible()
    Dim copyrng As Range, pasterng As Range
    Dim cell As Range, i As Long, newrng As Range, s As String
    
      
   'запрашиваем у пользователя по очереди диапазоны копирования и вставки
    Set copyrng = Application.InputBox("Диапазон копирования", "Запрос", Type:=8)
    Set pasterng = Application.InputBox("Диапазон вставки", "Запрос", Type:=8)
  
    'проверяем, чтобы они были одинакового размера
    If pasterng.SpecialCells(xlCellTypeVisible).Cells.Count <> copyrng.SpecialCells(xlCellTypeVisible).Cells.Count Then
        MsgBox "Диапазоны копирования и вставки разного размера!", vbCritical
        Exit Sub
    End If
     
    i = 0
    For Each cell In copyrng
        If i = 0 Then
            If cell.EntireRow.Hidden = False Then
                Set newrng = cell
                i = i + 1
            End If
        Else
            If cell.EntireRow.Hidden = False Then
                Set newrng = Union(newrng, cell)
            End If
        End If
    Next
    
    i = 1
    For Each cell In pasterng
        If cell.EntireRow.Hidden = False Then
            cell.Value = newrng.Cells(i).Value
            i = i + 1
        End If
    Next cell
End Sub

тоже не сработало. Попробую через адреса ячеек
желаю Вам счастья
Почему при копировании берутся и скрытые ячейки?
 
Цитата
ocet p написал:
Надо вам использовать "Areas".
Спасибо. Это где их надо использовать?
Ваш макрос не подошел
Изменено: borro - 28 Мар 2019 17:53:47
желаю Вам счастья
Почему при копировании берутся и скрытые ячейки?
 
Здравствуйте!

Попытался доработать чей-то макрос и сделать так, чтобы он копировал только видимые ячейки в другой выбираемый видимый диапазон, но почему-то не получается.
Вот код макроса:
Код
Sub PasteToVisible()
    Dim copyrng As Range, pasterng As Range
    Dim cell As Range, i As Long, newrng As Range
  
   'запрашиваем у пользователя по очереди диапазоны копирования и вставки
    Set copyrng = Application.InputBox("Диапазон копирования", "Запрос", Type:=8)
    Set pasterng = Application.InputBox("Диапазон вставки", "Запрос", Type:=8)
    
    'проверяем, чтобы они были одинакового размера
    If pasterng.SpecialCells(xlCellTypeVisible).Cells.Count <> copyrng.SpecialCells(xlCellTypeVisible).Cells.Count Then
        MsgBox "Диапазоны копирования и вставки разного размера!", vbCritical
        Exit Sub
    End If
  
    i = 1
    For Each cell In pasterng
        If cell.EntireRow.Hidden = False Then
            cell.value = copyrng.SpecialCells(xlCellTypeVisible).Cells(i).value
            i = i + 1
        End If
    Next cell
End Sub

Почему-то конструкция copyrng.SpecialCells(xlCellTypeVisible).Cells(i).value залезает в скрытые ячейки.
Как это можно исправить?
Изменено: borro - 29 Мар 2019 11:55:39
желаю Вам счастья
Функция листа - аналог like для поиска по шаблону
 
Сергей, для like есть возможность поймать смену регистра с помощью шаблона вида "*[а-яё][А-ЯЁ].*", что и хотелось бы применить с помощью пользовательских функций, не прибегая к VBA
желаю Вам счастья
Функция листа - аналог like для поиска по шаблону
 
vikttur, НАЙТИ не учитывает подстановочные знаки при поиске
желаю Вам счастья
Функция листа - аналог like для поиска по шаблону
 
А для этой задачи ПОИСК уже не подойдёт? В этой задаче нужна чувствительность к регистру, к его смене.
желаю Вам счастья
Функция листа - аналог like для поиска по шаблону
 
Всем спасибо!
желаю Вам счастья
Функция листа - аналог like для поиска по шаблону
 
Простите, вот пример значений
желаю Вам счастья
Функция листа - аналог like для поиска по шаблону
 
Здравствуйте!

Потребовалось в ячейку вставить функцию, которая бы определяла соответствует ли ячейка,скажем, слева от неё шаблону, который используется для оператора like в VBA. Но не нашел, что написать.
Например надо в столбце значений найти все ФИО, которые соответствуют шаблону "*  ?. ?." для оператора like.
Есть ли такая стандартная функция в Excel 2016?
желаю Вам счастья
Обработчик текста в выделенных ячейках
 
vikttur, хорошо.
Пытливый,  по последнему вопросу такое подошло
Код
If cell.value Like "*#" & Chr(34) & "[А-ЯЁа-яё]" & Chr(34) & "*" Then is_adr = 1
желаю Вам счастья
Обработчик текста в выделенных ячейках
 
Доброе утро!

Скажите как в шаблон like вставить двойную кавычку?
Такая строка кода выдает ошибку:
Код
if Str Like "*#"[А-ЯЁа-яё]"*" then is_adr = 1
Нужно сделать так, чтобы строки вида 53"Б"(адреса домов) отлавливались
Изменено: borro - 20 Мар 2019 11:18:25
желаю Вам счастья
Почему несоответствие типов?
 
Hugo, спасибо
желаю Вам счастья
Почему несоответствие типов?
 
Hugo, я же указал 1 последним параметром. то есть первый элемент массива. Или я неправильно понял описание функции?
желаю Вам счастья
Почему несоответствие типов?
 
Здравствуйте!

На строке кода vba:
Код
sФ = Split(s, " ", 1)
программа выдаёт ошибку несоответствия типов
При этом s это String, sФ тоже.
Прикладываю принсткрин из отладчика


Почему возникает ошибка?
желаю Вам счастья
Обработчик текста в выделенных ячейках
 
RAN, спасибо!
желаю Вам счастья
Обработчик текста в выделенных ячейках
 
Дополнил макрос самой нижней галочкой для разноса ФИО по столбцам. При запуске макроса возникает ошибка Object required.
Скажите, пожалуйста, почему?
Ответ: почему-то параметр процедуры надо писать не в скобках, а через пробел от названия процедуры
Изменено: borro - 19 Мар 2019 17:02:44
желаю Вам счастья
Как в макросе вызвать всплывающее окно?
 
Ігор Гончаренко, спасибо! А как же тогда на этапе отработки клика кнопки формы программа уже правильно понимает, что такое есть просто Selection, если у нее "на уме" одна только форма?
желаю Вам счастья
Обработчик текста в выделенных ячейках
 
V, спасибо! А по скорости выигрыш на регулярках будет?
желаю Вам счастья
Обработчик текста в выделенных ячейках
 
V, спасибо.  Попробую найти, как это сделать.
А удаляю все нецифровые и одновременно небуквенные(за исключением пробелов) символы я правильно или надо другой подход использовать?
Изменено: borro - 19 Мар 2019 11:16:46
желаю Вам счастья
Страницы: 1 2 3 4 5 6 След.
Наверх