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