Имя: Пароль:
IT
 
Кто силен в VBA, Помогите.
0 Balabass
 
23.08.13
10:14
на листе есть сотня объектов типа выпадающего списка
http://screencast.com/t/SSqNDpuRWgb
У каждого объекта есть 2 значения, которые мне надо поменять
http://screencast.com/t/zpaSw2rG

Поиск и замена не работает с объектами, поэтому надо написать скрипт на 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 писал а до этого на паскале. Что ты от меня хочешь )))