Excel 매크로 하이퍼링크.오류 추가

Excel 매크로 하이퍼링크.오류 추가

저는 Excel 내의 VBA 코드에 비교적 익숙하지 않으므로 대답이 간단하다면 용서해 주십시오(보통 그럴 것으로 예상합니다). 참고로 엑셀 2010을 사용하고 있습니다. 진행 스크립트를 사용하여 다음을 수행하려고 합니다.

D 열의 셀에 숫자 문자열(모든 값)을 입력하는 경우 이를 자동으로 대상 셀 값 앞에 특정 주소 문자열을 추가하고 셀의 값을 포함하는 친숙한 이름을 내뱉는 Hyerlink로 변환해야 합니다. 값.

즉, 매크로를 사용하여 복제하려는 Excel 함수의 예는 다음과 같습니다.

=HYPERLINK("http://stprs553/tickets/list/single_ticket/293136","Ticket #293136")

또는 좀 더 구체적으로 설명하면 다음과 같습니다(더 명확한 그림을 그려야 함).

=HYPERLINK(CONCATENATE("http://stprs553/tickets/list/single_ticket/","Target_Cell_Data"),"Ticket #Target_Cell_Data")

293136은 사용자가 D 열 내의 모든 셀에 입력할 수 있도록 하려는 숫자 문자열의 예입니다. 입력할 때 숫자 문자열을 기본 데이터로 사용하고 나머지를 추가하여 이 셀을 하이퍼링크로 변환하고 싶습니다. 셀 값 왼쪽에 있는 URL의 이름을 지정한 다음 "티켓 #"을 셀 값의 숫자 문자열과 연결하는 식별 이름을 만듭니다. 나는 사용자가 참조 링크를 갖기 위해 Excel 수식을 배워야 하거나 셀 데이터를 둘러싸기 위해 함수의 양쪽 끝을 복사하는 데 시간을 낭비하는 것을 원하지 않습니다.

지금까지 VBA에서 얻은 내용은 다음과 같습니다.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rangeLimit As Range
Set rangeLimit = Range("D:D")
If Not Intersect(rangeLimit, Target) Is Nothing Then
    If Target <> "" Then
         Target.Hyperlinks.Add Anchor:=Target, Address:="http://stprs533/tickets/list/single_ticket/" & c.Value, TextToDisplay:="Ticket #" & c.Value, Target.Value
    End If
End If
End Sub

내가 겪고 있는 문제는 다음과 같습니다.

1.) 수식을 있는 그대로 실행하려고 하면 컴파일 오류가 발생합니다. 2.) 하이퍼링크 문자열의 끝을 제거하면 , Target.Value오류 424, "개체 필요" 오류가 발생합니다.

내가 뭘 잘못하고 있는 걸까요? 원하는 기능을 수행하는 매크로를 어떻게 만들 수 있나요? 한 시간 동안 Google을 검색하고 일부 StackOverflow 게시물을 살펴본 결과 지금의 결과를 얻었지만 여전히 작동하지 않습니다.

답변1

내 생각에 함수 호출은 다음과 같아야 합니다.

Target.Hyperlinks.Add Anchor:=Target, Address:="http://stprs533/tickets/list/single_ticket/" & Target.Value, TextToDisplay:="Ticket #" & Target.Value

c방금 의 두 항목을 모두 로 변경했는데 Target, 이는 귀하가 설명하는 대로 작동할 것이라고 생각합니다. 아무것도 인스턴스화되지 않았기 때문에 '객체 필요' 오류가 발생합니다. c객체가 아닌 항목의 멤버를 검색할 수 없습니다.

편집, 변경되지 않는 셀 텍스트를 해결하려면 다음을 수행하십시오.

셀 텍스트가 숫자로만 남을지 궁금했습니다. 수정 사항은 다음과 같습니다.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rangeLimit As Range
    Set rangeLimit = Range("D:D")
    If Not Intersect(rangeLimit, Target) Is Nothing Then
        If IsNumeric(Target) And Not IsEmpty(Target) Then ' This condition should avoid munging of already-existing links, though if any tickets might be non-numeric it won't work properly.
             Application.EnableEvents = False  ' Must turn off event handling
             Target.Hyperlinks.Add Anchor:=Target, Address:="http://stprs533/tickets/list/single_ticket/" & Target.Value, TextToDisplay:="Ticket #" & Target.Value
             Target.Formula = "Ticket #" & Target.Value ' Should actually change the displayed text
             Application.EnableEvents = True
        End If
    End If
End Sub

VBA를 사용하여 이와 같은 이벤트 내부의 셀 내용을 편집할 때마다 이벤트 처리를 끄는 것이 중요합니다. 그렇지 않으면 무한 루프가 발생할 위험이 있습니다. 나는 처음에 이것을 생각했어야 했습니다. 그러나 셀에 하이퍼링크를 적용해도 실행되지 않는 것 같습니다 Worksheet_Change.

셀에서 하이퍼링크를 삭제하면 셀의 서식은 '밑줄' 및 '파란색 글꼴 색상'으로 유지됩니다. 열이 항상 티켓에 대한 링크이거나 빈 셀인 사용 사례의 경우 이것이 허용될 수 있습니까?

관련 정보