[/vba] с помощью его фильтруются данные на двух листах подскажите как задать переменную чтобы работало не только для одной пары данных "MBC Mykolaiv" и "MBC Mykolaiv" пробовал регулярными выражениями - не получается нужно что бы из буфера обмена текст загружался а как сделать не соображу
[/vba] с помощью его фильтруются данные на двух листах подскажите как задать переменную чтобы работало не только для одной пары данных "MBC Mykolaiv" и "MBC Mykolaiv" пробовал регулярными выражениями - не получается нужно что бы из буфера обмена текст загружался а как сделать не соображустатист
Сообщение отредактировал статист - Вторник, 27.12.2016, 12:04
Sub buffText() Dim str As String Dim myData As New DataObject myData.GetFromClipboard If myData.GetFormat(1) = True Then makros1 (myData) Else MsgBox "text on clipboard not found", vbCritical, "error" Exit Sub End If End Sub
[/vba] macros1 - это ваш макрос в нем надо дополнить строку sub макрос(tbd as string) и все значения в коде "MBC Mykolaiv" заменить на tbd
копируете текст в буфер, запускаете макрос bufftext он из буфера берет значение в переменную и если это текст вызывает ваш макрос, присваивая его переменной tbd значение из буфера
[vba]
Код
Sub buffText() Dim str As String Dim myData As New DataObject myData.GetFromClipboard If myData.GetFormat(1) = True Then makros1 (myData) Else MsgBox "text on clipboard not found", vbCritical, "error" Exit Sub End If End Sub
[/vba] macros1 - это ваш макрос в нем надо дополнить строку sub макрос(tbd as string) и все значения в коде "MBC Mykolaiv" заменить на tbd
копируете текст в буфер, запускаете макрос bufftext он из буфера берет значение в переменную и если это текст вызывает ваш макрос, присваивая его переменной tbd значение из буфераK-SerJC
статист, почитайте пост Борбьа с кракозябрами или хотя бы просто перед копированием переключайте раскладку клавиатуры в RUS - будет нормально копипаститься без "зюковок"
статист, почитайте пост Борбьа с кракозябрами или хотя бы просто перед копированием переключайте раскладку клавиатуры в RUS - будет нормально копипаститься без "зюковок"Alex_ST
ну так обозначьте две переменные для процедуры [vba]
Код
sub макрос(tbd1 as string, tbd2 as string)
[/vba] только из буфера обмена вы сразу два параметра как планируете вытащить? если только эти параметры брать с листа(определенных ячеек) или формыK-SerJC
Благими намерениями выстелена дорога в АД.
Сообщение отредактировал K-SerJC - Вторник, 27.12.2016, 15:02
примеры берутся по очереди - то есть скопировал значение с одной ячейки вставил в окошко фильтра (поиск) затем скопировал значение второй ячейки и вставил в поиск другого фильтра было бы идеально задать команду или объект (я не знаю ) которая вставляла бы значение в окошко поиска фильтра значение из буфера
примеры берутся по очереди - то есть скопировал значение с одной ячейки вставил в окошко фильтра (поиск) затем скопировал значение второй ячейки и вставил в поиск другого фильтра было бы идеально задать команду или объект (я не знаю ) которая вставляла бы значение в окошко поиска фильтра значение из буферастатист
Сообщение отредактировал статист - Вторник, 27.12.2016, 15:45
Вообще-то буфер обмена - это объект форточек, поэтому прямого обращения к нему из VBA нет. Но обращаться к нему совсем не сложно. Не одной командой, конечно, но всё-таки… Вот пачка примерчиков:
[vba]
Код
' ============= Буфер обмена ================= Function GetFromClipBoard() ' получить значение из буфера обмена With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .GetFromClipBoard GetFromClipBoard = .GetText End With End Function Function PutInClipBoard(sValue$) ' поместить значение в буфер обмена With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText sValue .PutInClipBoard End With End Function
Sub test_PutInClipBoard() ' поместить значение в буфер обмена PutInClipBoard ("PutInClipBoard") End Sub
Sub test_ClearClipBoard() ' очистить буфер обмена PutInClipBoard ("") End Sub
Sub test_GetFromClipBoard() ' получить значение из буфера обмена Debug.Print GetFromClipBoard End Sub
может есть команда выполняющая нажатие клавиш Ctrl+V ?
Да нет проблем:[vba]
Код
Application.SendKeys "^{V}"
[/vba]Каков вопрос, таков и ответ. А про то, как сказать приложению, в какое из полей диалогового окна автофильтра нужно это вставлять, Вы не спрашивали
Вообще-то буфер обмена - это объект форточек, поэтому прямого обращения к нему из VBA нет. Но обращаться к нему совсем не сложно. Не одной командой, конечно, но всё-таки… Вот пачка примерчиков:
[vba]
Код
' ============= Буфер обмена ================= Function GetFromClipBoard() ' получить значение из буфера обмена With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .GetFromClipBoard GetFromClipBoard = .GetText End With End Function Function PutInClipBoard(sValue$) ' поместить значение в буфер обмена With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText sValue .PutInClipBoard End With End Function
Sub test_PutInClipBoard() ' поместить значение в буфер обмена PutInClipBoard ("PutInClipBoard") End Sub
Sub test_ClearClipBoard() ' очистить буфер обмена PutInClipBoard ("") End Sub
Sub test_GetFromClipBoard() ' получить значение из буфера обмена Debug.Print GetFromClipBoard End Sub
может есть команда выполняющая нажатие клавиш Ctrl+V ?
Да нет проблем:[vba]
Код
Application.SendKeys "^{V}"
[/vba]Каков вопрос, таков и ответ. А про то, как сказать приложению, в какое из полей диалогового окна автофильтра нужно это вставлять, Вы не спрашивали Alex_ST
статист, вы не правильно применяете операнды. и полученные рекомендации VBA это хороший инструмент в котором можно решить любую задачу, главное найти как и правильно сложить нужные блоки
там нет волшебной кнопки под любую задачу
можно в вашем коде поставить вместо "MBC Mykolaiv" - [vba]
Код
inputbox ("Введите текст первого фильтра", vbokonly)
Алекс тут без конкретно оформленного решения врятли получиться
статист, вы не правильно применяете операнды. и полученные рекомендации VBA это хороший инструмент в котором можно решить любую задачу, главное найти как и правильно сложить нужные блоки
там нет волшебной кнопки под любую задачу
можно в вашем коде поставить вместо "MBC Mykolaiv" - [vba]
Код
inputbox ("Введите текст первого фильтра", vbokonly)
Судя по Вашим "упражнениям", Вы, владея только макрорекордером , не понимая синтаксиса и команд VBA, пытаетесь из разрозненных кусков процедур и примеров, абсолютно не разобравшись как они работают, слепить что-то работоспособное. Франкенштейн-то, создавая своего монстра, хотя бы понимал, где какие части тел нужно поставить и как они должны взаимодействовать с другими органами... Пытаться помогать тут, имхо, бессмысленно. Можно только направить на нужный путь: в Библиотеку за начальными знаниями или в Фриланс за готовым решением.
Судя по Вашим "упражнениям", Вы, владея только макрорекордером , не понимая синтаксиса и команд VBA, пытаетесь из разрозненных кусков процедур и примеров, абсолютно не разобравшись как они работают, слепить что-то работоспособное. Франкенштейн-то, создавая своего монстра, хотя бы понимал, где какие части тел нужно поставить и как они должны взаимодействовать с другими органами... Пытаться помогать тут, имхо, бессмысленно. Можно только направить на нужный путь: в Библиотеку за начальными знаниями или в Фриланс за готовым решением.Alex_ST