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