Страницы: 1
RSS
Как производить арифметические действия с адресом ячейки в макросе
 
Доброго дня!
вот есть такой макрос:
Код
                              
        Dim iFind0 As String                      
   Dim iRange0 As String 
   iFind0 = Worksheets("Лист1").Cells(2, 2).Value        
   iRange0 = Range("A1:A100").Find(iFind0).Address   
                                    
подскажите пожалуйста, как из полученного в iRange0 адреса ячейки получить другой адрес?
Поясню: например iRange0=A65, а как присвоить другой переменной (например iRangeХ) адрес соседней ячейки т.е. B65.
какая-то конструкция наподобие: iRangeХ=iRange0+1 что ли.......
Спасибо
 
Код
  Dim iRange0 As Range
  iFind0 = Worksheets("Лист1").Cells(2, 2).Value        
  iRange0 = Range("A1:A100").Find(iFind0)
  Msgbox "правее от " & iRange0.Address & " = " & iRange0.Offset(0,1)
а проще всего к ячейкам обращаться по их адресу (строка, колонка)
правее ячейки Cells(r,c)
будет ячейка Cells(r,c+1)
циклы по R по С - абсолютно очевидны и понятны
Изменено: Игорь Гончаренко - 26.08.2016 13:54:55
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Нет, не работает (код).
Ошибка в этой строке:
iRange0 = Range("A1:A100").Find(iFind0)
Изменено: john22255 - 26.08.2016 13:59:58
 
прикрепляете файл и тут же разберемся что у Вас не работает  
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
извините, ОПЕЧАТКА,нужно
Set iRange0 = Range("A1:A100").Find(iFind0)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Спасибо, но все равно значения адреса ячейки В13 не просматривается.
Непонятно как получить для дальнейшей обработки адрес ячейки которая находится справа.
Изменено: john22255 - 26.08.2016 14:30:25
 
впишите в В13 Васян
выполните макрос еще раз

iRange0.Offset(0,1) - это ячейка правее iRange0
нужен ее адрес?
iRange0.Offset(0,1).address
но подозреваю, что Вам нужно все-таки значение из ячейки правее найденной, а не ее адрес
Изменено: Игорь Гончаренко - 26.08.2016 15:45:14
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Посмотрите мой вариант, написан под ваш пример.
Код
Sub Макрос()
Dim sFind, iRange, adr
With ThisWorkbook
  With Лист1
  sFind = .Cells(2, 2).Value                      '''ссылка на ячейку В2 со занчением для поиска
    With .Range(.Cells(1, 1), .Cells(100, 1))     ''' поиск в заданном диаппазоне А1:А100
      Set iRange = .Find(What:=sFind, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False) '''ссылка на найденую ячейку со занчением
      adr = iRange.Address                        ''' переменная содержит адрес ячейки
    End With
  End With
End With
End Sub
 
Цитата
Игорь Гончаренко написал: iRange0.Offset(0,1).address
Вот так все получилось. Нужен действительно адрес ячейки, а не значение. Большое спасибо.
 
TSN, выскакивает ошибка

рисунки удалены: превышение допустимого размера вложения [МОДЕРАТОР]
 
if irange is nothing then msgbox "не найден!" else adr = irange.address
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Так будет работать
Код
Sub Макрос()
Dim sFind, iRange, adr
With ThisWorkbook
  With Лист1
  sFind = .Cells(2, 2).Value                      '''ссылка на ячейку В2 со занчением для поиска
    With .Range(.Cells(1, 1), .Cells(100, 1))     ''' поиск в заданном диаппазоне А1:А100
      Set iRange = .Find(What:=sFind, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False) '''ссылка на найденую ячейку со занчением
      If Not iRange Is Nothing Then
        MsgBox "адрес " & iRange.Address & vbCrLf & "значение = " & iRange.Value
      Else
        MsgBox "Поиск не дал результат"
      End If
    End With
  End With
End With
End Sub
Страницы: 1
Наверх