Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Вложенные циклы Добавлено: 03.07.07 00:17  

Автор вопроса:  Дмитрий
Имеем журнал. Требуется проверить диапазон ячеек- если присутствует ??.06.2007 следует переместиться на 3 столбца вправо(знаю, что использовать нужно метод offset), но не знают как реализовать этот переход.
Ниже привожу кусок кода, всего имеется ещё 3 вложения, в которых тоже необходимо осуществить переход.

Sub Worksheet_Change(ByVal Target As Range)
Dim rgData As Range
Dim cell As Range
Set rgData = Range("A283:A400")
If Not (Application.Intersect(Target, rgData) Is Nothing) Then
 If Application.WorksheetFunction.CountA(rgData) > 0 Then
 'Изменена ячейка из контролируемого диапазона
 'Проверяем каждую ячейку из контролируемого диапазона
  For Each cell In rgData
   If cell.Value Like "*??.06.2007*" Then
здесь необходимо осуществить переход.

Думал решить этот вопрос с помощью оператора GoTo, но ничего не получилось:
Sub Worksheet_Change(ByVal Target As Range)
Dim rgData As Range
Dim cell As Range
Set rgData = Range("A283:A400")
If Not (Application.Intersect(Target, rgData) Is Nothing) Then
 If Application.WorksheetFunction.CountA(rgData) > 0 Then
 'Изменена ячейка из контролируемого диапазона
 'Проверяем каждую ячейку из контролируемого диапазона
  For Each cell In rgData
   If cell.Value Like "*??.06.2007*" Then GoTo awto:

  awto:
 
  Set rgData = cell.offset(0, 3).activate
Дальше идёт условие: если значение ячейки труе- опять переход.
Если нужно есть блок схема, но я думаю я понятноизложил суть.
Заранее благодарен всем откликнувшимся!

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 Pavel



Вопросов: 0
Ответов: 82
 Профиль | | #1 Добавлено: 03.07.07 11:22
For Each cell In rgData
   If cell.Value Like "*??.06.2007*" Then
    cell.Offset(0, 3).Select
   End If
Next

Ответить

Номер ответа: 2
Автор ответа:
 Дмитрий



Вопросов: 1
Ответов: 2
 Профиль | | #2 Добавлено: 04.07.07 21:22
Я, наверное не правильно выразился- получить доступ к ячейке, а не выделить. Решил проблему так:

For Each cell In rgData
   If cell.Value Like "*??.07.2007*" Then
      Set cell = cell.Offset(0, 3)
      If cell.Value Like "* *" Then
      ....
      End if
   End if
Next

И всё работает.
И ещё вопрос: необходимо скопировать данные с ячейки(в ячейке результат суммы). Например с ячейки О287 в О288.
Пишу:


Range("O287";).Copy Destination:=Range("O288";)


Получаю результат: в ячейку О288 скопировалась формула с О287, причем со смещением суммируемого диапазона.
И ещё, можно создать кнопку с действием "выполнить макрос ...."?

Ответить

Номер ответа: 3
Автор ответа:
 Дмитрий



Вопросов: 1
Ответов: 2
 Профиль | | #3 Добавлено: 05.07.07 00:03

Я, наверное не правильно выразился- получить доступ к ячейке, а не выделить.

Я был не прав,разобрался.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам