|
|
Кто силен в VBA, Помогите. |
☑ |
|
0
Balabass
23.08.13
✎
10:14
|
на листе есть сотня объектов типа выпадающего списка
У каждого объекта есть 2 значения, которые мне надо поменять
Поиск и замена не работает с объектами, поэтому надо написать скрипт на VBA, чтобы обойти все объекты на листе и заменить ТРАТАТА!ДИАПАЗОН на ТРОЛОЛО!ДИАПАЗОН. Заменить нужно то, что до ! знака. Подсобите?
Пополню баланс выручающего.
|
|
|
1
Gantosha
23.08.13
✎
10:35
|
там есть запись макросов ..включаешь и начинаешь менять ..потом останаввливаешь запись ..и дописываешь код - всякие циклы пишутся как и в 1с только слова английские
|
|
|
2
Balabass
23.08.13
✎
10:56
|
(1) Плять!(Ударил себя лодонью по лбу). Точно! Спасибо мил человек!
|
|
|
3
Wobland
23.08.13
✎
10:57
|
(2) на спасибо жене не позвонишь ;)
|
|
|
4
Balabass
23.08.13
✎
11:02
|
(3) Судя по фото, он не нуждается в моих 50 рублях)
|
|
|
5
Balabass
23.08.13
✎
12:16
|
Осторожно. Копрокод на VBA чтобы в экселе заменить у объектов на листе значение ранжа.
Sub Макрос1()
'объявление переменной численного типа
Dim i As Integer
'присваеваем ей значение 1
i = 1
'при ошибке продолжить аля попытка в 1с
On Error Resume Next
Do While i < 999
'попытка присвоить переменной обж объект по счетчику И
Set obj = ActiveSheet.Shapes("Drop Down " + CStr(i)).Select
'Если объект пуст, т.е. не существует то идем далее
If Not (obj Is Nothing) Then
'Else
'иначе пытаемся работать с объектом и получаем на него селект
ActiveSheet.Shapes("Drop Down " + CStr(i)).Select
'работаем с селектом
With Selection
'получаем в строковом виде значение которое надо менять
b = CStr(.ListFillRange)
'тут пишем то будем дописывать к нашему значению
C = "НУЖНАЯНАМЧАТЬДЛЯВЫПИЛИВАНИЯ"
'выкидываем часть ненужную нам по символам начала и кончала
Do While InStr(1, b, "СИМВОЛНАЧАЛАВЫПИЛИВАНИЯ") And InStr(1, b, "СИМВОЛОКОНЧАНИЯВЫПИЛИВАНИЯ")
c1 = InStr(1, b, "СИМВОЛНАЧАЛАВЫПИЛИВАНИЯ")
c2 = InStr(1, b, "СИМВОЛОКОНЧАНИЯВЫПИЛИВАНИЯ")
d1 = Mid(b, 1, c1 - 1)
d2 = Mid(b, c2 + 1 + 1)
b = d1 + d2
Loop
'MsgBox b при желании можно сообщить что там получается и запишем что нужно в объект
.ListFillRange = C + b
'.DropDownLines = 369
End With
End If
i = i + 1
Loop
End Sub
Вроде все.
|
|
|
6
Wobland
23.08.13
✎
12:26
|
'объявление переменной численного типа
Dim i As Integer
'присваеваем ей значение 1
i = 1
это мощно!
|
|
|
7
Balabass
23.08.13
✎
12:37
|
(6) Можно не объявлять?
|
|
|
8
Капитан О
23.08.13
✎
12:38
|
(7) завидую таким комментариям
|
|
|
9
Balabass
23.08.13
✎
12:38
|
Да я последний раз на английском в школе в делфях 6 писал а до этого на паскале. Что ты от меня хочешь )))
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший