Подскажите что не так...

Программирование на Visual Basic for Applications
Vladimir13
Новичок
Новичок
 
Сообщения: 39
Зарегистрирован: 19.09.2007 (Ср) 11:55

Подскажите что не так...

Сообщение Vladimir13 » 27.09.2007 (Чт) 9:28

1. Изночально хотелось чтобы прога меняла значения вовсех открытых книгах, и на каждом листе (а получилось только во всех открытых книгах, но только в активных листах.
2. подскжите как поменять во всех книгах, но только листах с именем ХХХ
===============================================
Private Sub CommandButton3_Click()
Dim ww As Workbook
'Dim ws As Worksheet
For Each ww In Workbooks
'For Each ws In Worksheets
ww.Activate
' ws.Activate
Cells.Replace What:=TextBox1, Replacement:=TextBox2, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
' Next ws
Next ww
End Sub
===============================================
Заранее спасибо.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 27.09.2007 (Чт) 9:43

1. Внутренний цикл раскомментировать, Worksheets заменить на ww.Worksheets.
2. ww.Activate убрать.
3. ws.Activate убрать.
4. Cells заменить на ws.Cells.
Lasciate ogni speranza, voi ch'entrate.

Vladimir13
Новичок
Новичок
 
Сообщения: 39
Зарегистрирован: 19.09.2007 (Ср) 11:55

Сообщение Vladimir13 » 27.09.2007 (Чт) 10:14

alibek
Для всех листов получилось, а как объяснить чтобы менять во всех книгах, но в листах с именем ХХХХХ
=======================================
Private Sub CommandButton3_Click()
Dim ww As Workbook
Dim ws As Worksheet
For Each ww In Workbooks
For Each ws In ww.Worksheets
ws.Cells.Replace What:=TextBox1, Replacement:=TextBox2, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next ws
Next ww
End Sub
=======================================

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 27.09.2007 (Чт) 11:00

Нажми F2 и почитай названия свойств объекта Worksheet.
Lasciate ogni speranza, voi ch'entrate.

Vladimir13
Новичок
Новичок
 
Сообщения: 39
Зарегистрирован: 19.09.2007 (Ср) 11:55

Сообщение Vladimir13 » 27.09.2007 (Чт) 13:19

alibek
Легко сказать "посмотри", если бы я сильно шарил в VBA... ,
вообще я стараюсь всегда смотреть прежде чем спрашивать.
Я же не програмистом работаю, просто возникают задачи
которые надо решить достаточно быстро а VBA только начал изучать.
Лучше бы пояснил попонятней я бы был премного благодарен!

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 27.09.2007 (Чт) 13:54

Vladimir13, а как ты думаешь, какое свойство объекта Worksheet тебе поможет? Это во-первых, а во-вторых, причем тут "только начал изучать VBA"? Я так вообще в VBA не программирую.
Весь мир матрица, а мы в нем потоки байтов!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 27.09.2007 (Чт) 13:57

Для того, чтобы просмотреть названия свойств объекта Worksheet, тебе не надо знать VBA. Достаточно знать латинские буквы и минимально знать английский язык. У листа есть свойство с самодокументирующимся названием, оно тебе и нужно.
Lasciate ogni speranza, voi ch'entrate.

Vladimir13
Новичок
Новичок
 
Сообщения: 39
Зарегистрирован: 19.09.2007 (Ср) 11:55

Сообщение Vladimir13 » 27.09.2007 (Чт) 17:33

alibek
а если пойти таким путём, то почему не работает:
Sub Кнопка1_Щелчок()
Dim ww As Workbook
Dim ws As Worksheet
For Each ww In Workbooks
For Each ws In ActiveWorkbook.Worksheets
With ws
If .Name = "Смета" Then _
Cells.Replace What:="2", Replacement:="wx", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End If
End With
Next ws
Next ww
End Sub

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 27.09.2007 (Чт) 21:32

А может так?

Код: Выделить всё
Sub Button1_Click()
    Dim ww As Workbook
    Dim ws As Worksheet
    For Each ww In Workbooks
        For Each ws In ww.Worksheets
            If ws.Name = "Смета" Then
                ws.Cells.Replace What:="2", Replacement:="wx"
            End If
        Next ws
    Next ww
End Sub


или даже так:

Код: Выделить всё
Sub Button1_Click()
    Dim ww As Workbook
    On Error Resume Next
    For Each ww In Workbooks
        ww.Worksheets("Смета").Cells.Replace What:="2", Replacement:="wx"
    Next ww
End Sub
Привет,
KL

Vladimir13
Новичок
Новичок
 
Сообщения: 39
Зарегистрирован: 19.09.2007 (Ср) 11:55

Сообщение Vladimir13 » 27.09.2007 (Чт) 22:05

KL
СПАСИБО!!!!

p.s. есть ещё один маленький вопрос по поводу этой строчки:

ww.Worksheets("Смета").Cells.Replace What:="2", Replacement:="wx"

Если я хочу Название листа "Смета" , брать из TextBox1
ww.Worksheets(TextBox1).Cells.Replace What:="2", Replacement:="wx"

пишет ошибку, подскажи как правильно.

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 27.09.2007 (Чт) 23:29

Код: Выделить всё
ww.Worksheets(TextBox1.Value).Cells.Replace What:="2", Replacement:="wx"
Привет,
KL

Vladimir13
Новичок
Новичок
 
Сообщения: 39
Зарегистрирован: 19.09.2007 (Ср) 11:55

Сообщение Vladimir13 » 28.09.2007 (Пт) 14:52

KL
Ещё раз СПАСИБО очень выручил!

Vladimir13
Новичок
Новичок
 
Сообщения: 39
Зарегистрирован: 19.09.2007 (Ср) 11:55

Сообщение Vladimir13 » 01.10.2007 (Пн) 14:21

Подскажите, хотелось чтобы добавлялась информация в укзанном листе, но во всех книгах, а добаляет только в активном листе:

Код: Выделить всё

Private Sub CommandButton12_Click()
  Dim ww As Workbook
    Dim ws As Worksheet
    For Each ww In Workbooks
        For Each ws In ww.Worksheets
            If ws.Name = TextBox33 Then
                ws.Cells.Find(What:=TextBox32, After:=ActiveCell).Activate
                ws.Cells(ActiveCell.Row + TextBox31, ActiveCell.Column + TextBox29).Select
                ws.ActiveCell = TextBox34
            End If
        Next ws
    Next ww
End Sub

[/syntax]

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 01.10.2007 (Пн) 16:51

а так?

Код: Выделить всё
Private Sub CommandButton12_Click()
    Dim ww As Workbook
    On Error Resume Next
    For Each ww In Workbooks
        With ww.Worksheets(TextBox33.Value)
            .Cells.Find(What:=TextBox32).Offset(TextBox31, TextBox29) = TextBox34
        End With
    Next ww
End Sub
Привет,
KL

Vladimir13
Новичок
Новичок
 
Сообщения: 39
Зарегистрирован: 19.09.2007 (Ср) 11:55

Сообщение Vladimir13 » 01.10.2007 (Пн) 17:51

KL
Работает!
Единственное мне для дальнейших операций,
хотелось чтобы ячейка в котрую произошла
вставка стала активной, но если что так пойдет!

Еще раз СПАСИБО!


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 49

    TopList