Как я могу изменить свой код в Excel 2003, чтобы я мог вставить его в несколько ячеек? - PullRequest
1 голос
/ 21 декабря 2010

столкнулся с небольшой проблемой.Если я пытаюсь вставить несколько ячеек, которые находятся в диапазоне в коде ниже, я получаю ошибку времени выполнения 13, несоответствие типов.Ячейки в диапазоне могут иметь данные, отличные от X, но я хочу, чтобы гиперссылка отображалась, только если ячейка содержит X. Это прекрасно работает, если я просто набираю X в ячейке или если я вставляю в одну ячейку за раз.У меня будет время, когда я хочу вставить другой текст в несколько ячеек в этом диапазоне.Спасибо Remnant за помощь в написании оригинального кода.Это последнее препятствие поставит меня в открытую.Thx.

 Private Sub Worksheet_Change(ByVal Target As Range)
 Dim rangeLimit As Range

 Set rangeLimit = Range 
("B9:B37,C9:C37,D9:D37,E9:E37,F9:F37,G9:G37,H9:H37,I9:I37,J9:J37,K9:K37,L9:L37,M9:M37")

 If Not Intersect(rangeLimit, Target) Is Nothing Then
     If Target = "x" Or Target = "X" Then
    Target.Hyperlinks.Add Anchor:=Target, Address:="", SubAddress:="Exceptions!A1", 
    TextToDisplay:=Target.Value

  End If

 End If

 End Sub

Ответы [ 3 ]

3 голосов
/ 21 декабря 2010

Я бы пошел по этому пути (не проверено):

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rangeLimit As Range
    dim c as range

    Set rangeLimit = Range("B9:M37")
    If Not Intersect(rangeLimit, Target) Is Nothing Then
       for each c in Intersect(rangeLimit, Target) 
          If c.value = "x" Then
              c.Hyperlinks.Add Anchor:=c, Address:="", SubAddress:="Exceptions!A1", TextToDisplay:=c.Value
          End If
        next c
    End If
End Sub
1 голос
/ 21 декабря 2010

Когда вы вставляете диапазон, «Цель» - это набор ячеек, а не только одна ячейка.Если вы знаете, что этот код работает для одной ячейки, вы можете перебрать все ячейки в целевом диапазоне и вызвать оператор If для каждой из ячеек.

0 голосов
/ 22 декабря 2010

Попробуйте эту модификацию к оригинальному коду.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rangeLimit As Range
Dim cl As Range

Set rangeLimit = Range("B9:B37,C9:C37,D9:D37,E9:E37,F9:F37,G9:G37,H9:H37,I9:I37,J9:J37,K9:K37,L9:L37,M9:M37")

If Not Intersect(rangeLimit, Target) Is Nothing Then
    For Each cl In Target
        If cl = "x" Or cl = "X" Then
            cl.Hyperlinks.Add Anchor:=cl, Address:="", SubAddress:="Exceptions!A1", TextToDisplay:=cl.Value
        End If
    Next cl
End If

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...