엑셀에서 vba 매크로를 실행하기 위해 하이퍼링크를 사용할 수 있습니까?
여러 행의 데이터가 있는 스프레드시트가 있습니다.해당 행의 데이터를 사용하여 매크로를 실행할 셀을 클릭할 수 있습니다.행 수는 항상 바뀌기 때문에 각 행에 대한 하이퍼링크가 가장 좋은 방법이라고 생각했습니다.
ROW MeterID Lat Long ReadX ReadY ReadZ CoeffA CoeffB CoeffC
2 10f62gs 34.1 33.3 102.2 231.3 382.2 4.34 22.1 0.002
3 83gs72g 34.4 31.4 109.2 213.1 372.1 2.23 12.7 0.023
4 43gS128 33.3 32.2 118.8 138.7 241.8 1.94 5.08 0.107
하이퍼링크를 클릭하고 하이퍼링크를 클릭한 셀의 행을 알 수 있는 vba 매크로를 실행할 수 있는 방법이 있습니까?
이것은 당신에게 효과가 있을 것입니다.
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
MsgBox "Row " & ActiveCell.Row & " is clicked"
End Sub
매크로를 실행하는 하이퍼링크의 더 흥미로운 방법은 다음 접근법(Hyperlink 공식)인 것 같습니다.이벤트가 필요하지 않습니다.
- 셀에 하이퍼링크 공식을 작성합니다.이는 VBA에서도 수행할 수 있습니다.
Sub testCreateHyperlinkFunction()
'Very important to have # in front of the function name!
Range("A1:A5").Formula = "=HYPERLINK(""#MyFunctionkClick()"", ""Run a function..."")"
End Sub
처리된 범위의 초기 셀 값을 유지할 수 있는 다음 접근 방식이 더욱 사용됩니다(예: "A1:A5").
Sub testCreateHyperlinkFunctionBis()
Dim rng As Range, arr As Variant, c As Range, i As Long
Set rng = Range("A1:A5")
arr = rng.Value
For i = 1 To UBound(arr, 1)
Range("A" & i).Formula = "=HYPERLINK(""#MyFunctionkClick()"", " & _
IIf(IsNumeric(arr(i, 1)), arr(i, 1), """" & arr(i, 1) & """") & ")"
Next i
End Sub
- 모듈에서 호출할 함수를 만듭니다.
Function MyFunctionkClick()
Set MyFunctionkClick = Selection 'This is required for the link to work properly
MsgBox "The clicked cell addres is " & Selection.row
End Function
Set MyFunctionkClick = Selection 라인이 꼭 필요합니다.함수는 코드가 어떤 셀을 가리키는지 알아야 합니다.이 값이 없으면 함수가 두 번 호출되고 "Reference is invalid" 오류가 발생합니다.
- 클능, 기
MyFunctionkClick()
실행...
예, 다음과 같은 간단한 단계를 수행할 수 있습니다.
- 하이퍼링크를 만들 셀 선택
- 마우스 오른쪽 단추 클릭 –> 하이퍼링크...
- 하이퍼링크를 만들 동일 셀의 주소를 입력하고 링크에 이름을 지정합니다.아래 그림을 참조하십시오.
하이퍼링크에 매크로 할당
- 확인을 클릭합니다.
- HyperLink가 생성됩니다.
참고: 이 하이퍼링크를 클릭하면 동일한 셀 주소에 할당되므로 아무 작업도 수행되지 않습니다.
- 이제 Alt + F11을 누릅니다.
- 아래 코드를 복사하여 붙여넣기
하이퍼링크를 클릭하여 Excel 매크로 실행
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
'Check if the Target Address is same as you have given
'In the above example i have taken A4 Cell, so I am
'Comparing this with $A$4
If Target.Range.Address = "$A$4" Then
'Write your all VBA Code, which you want to execute
'Or Call the function or Macro which you have
'written or recorded.
MsgBox "Write your Code here to be executed"
Exit Sub
End If
End Sub
위의 코드에서 셀 주소를 비교한 다음 코드 또는 함수 집합을 실행합니다.이것을 하는 다른 방법도 있습니다.대상 이름과 비교하여 코드를 실행할 수 있습니다.위의 예에서 하이퍼링크 대상의 이름을 MyMacro로 지정했습니다.
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
'Check if the Target Name is same as you have given
'In the above example i have given the Name of the HyperLink
'is MyMacro.
If Target.Name = "mymacro" Then
'Write your all VBA Code, which you want to execute
'Or Call the function or Macro which you have
'written or recorded.
MsgBox "Write your Code here to be executed"
Exit Sub
End If
End Sub
저는 여기서 제가 과거에 사용했던 답 중 하나에서 영감을 얻은 또 다른 접근법을 추가하고 싶습니다.즉, 행 처리를 시작하기 위해 하이퍼링크나 도우미 열을 작성할 필요가 없으며, 처리할 행의 셀을 두 번 클릭하면 됩니다.
두 번 클릭하는 작업을 수행할 시트에서 다음을 사용합니다.
Private Sub Worksheet_Activate()
Application.OnDoubleClick = "Module1.ProcessRow"
End Sub
Private Sub Worksheet_Deactivate()
Application.OnDoubleClick = ""
End Sub
그다음에Module1
활성 셀을 처리하는 루틴이 있습니다.
Sub processRow()
MsgBox "Row " & ActiveCell.Row & " on " & ActiveSheet.Name & " was clicked"
End Sub
또한 워크북 이벤트에서 Excel 더블 클릭 방법을 비활성화해야 합니다.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnDoubleClick = ""
End Sub
더블 클릭 방법은 행에서 데이터를 채운 사용자 양식을 불러오거나 데이터를 다른 시트로 전송하는 등 많은 프로세스에 매우 편리하고 직관적입니다.
각 셀에 대한 하이퍼링크를 만드는 번거로움을 겪기 보다는, 당신은 그것을 참조하는 매크로를 만드는 것이 좋을 것이라고 생각합니다.Activecell
소유물.그런 다음 매크로를 실행할 키보드 단축키를 만듭니다.수행 방법:
- Alt+F8을 누릅니다.
- 선택한다.
Options
- 바로 가기 키로 사용할 키 선택
하이퍼링크가 이미 있는 경우 다음을 사용하여 매크로 트리거Hyperlink_Follow
이벤트가 가장 좋을 수 있습니다.그렇지 않다면, 제 추천을 고려해 보세요.
= SDK() 접근 방식으로 재생한 결과, 이 코드가 Excel 셀에서 하이퍼링크를 만드는 데 사용됩니다.
Sub testCreateHyperlinkFunction()
Dim r As Range
Set r = Range("A1")
' use SubAddress arg of Hyperlinks.Add method to link our function
r.Hyperlinks.Add _
Anchor:=r, _
Address:=vbNullString, _
SubAddress:="MyFunctionkClick()", _
TextToDisplay:="Hyperlink text"
' note: TextToDisplay arg is desirable here,
' otherwise Excel will insert MyFunctionkClick() here
End Sub
Function MyFunctionkClick()
Set MyFunctionkClick = Selection ' required!
MsgBox "The clicked cell addres is " & Selection.row
End Function
장점:
- 범위. 하이퍼링크(1).후속 작업;
- 사용자의 원치 않는 링크 변경으로부터 보호.
- 문서의 다른 링크와 동일한 "모양 & 채우기";
단점:
- MyFunctionkClick()의 디버깅을 아직 사용할 수 없습니다.
- Excel GUI에서 하이퍼링크를 변경할 수 없음 - 코드에서만 변경 가능
하이퍼링크로 호출되는 VBA 매크로를 사용하려고 했습니다.
이 작업은 =DICOM이 들어 있는 행 아래에 한 행을 삽입하는 것입니다.
VBA는 무시하는 것 같습니다.삽입
Function HyperlinkFnc_AddRow()
Set HyperlinkFnc_AddRow = Selection
MsgBox "Next line of code: Adding a row below selected row " & Selection.Row
Rows(Selection.Row + 1).Insert Shift:=xlShiftDown, CopyOrigin:=xlFormatFromLeftOrAbove
End Function
Sub Button_AddRow()
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Select
HyperlinkFnc_AddRow
End Sub
관찰
하이퍼링크 함수에 의해 하이퍼링크Fnc_AddRow()가 호출되는 경우
(예: =DICOM("#HyperlinkFnc_AddRow()", 이 하이퍼링크에 의한 ""HyperlinkFnc_AddRow()" 호출 함수"는 아래에 행을 추가해야 합니다."
- "MsgBox"가 제어를 받습니다.
- 다음 행은 ".삽입"은 무시됩니다(행은 삽입되지 않음).
버튼으로 SubButton_AddRow()를 호출하면 "HyperlinkFnc_AddRow" 함수의 코드가 의도한 대로 작동함을 나타냅니다(행이 삽입됨).
이 문제를 해결하는 것이 도움이 될 것입니다.
언급URL : https://stackoverflow.com/questions/28728600/in-excel-can-i-use-a-hyperlink-to-run-vba-macro
'sourcecode' 카테고리의 다른 글
Oracle sqlldr TRADING NULLCOLS가 필요한데 그 이유는 무엇입니까? (0) | 2023.06.13 |
---|---|
Android 튜토리얼에서 대부분의 필드(클래스 멤버)가 m으로 시작하는 이유는 무엇입니까? (0) | 2023.06.13 |
v-for를 사용하여 구성 요소를 채우는 Vuexgetter (0) | 2023.06.08 |
Oracle 테이블에 열 추가 (0) | 2023.06.08 |
Oracle에서 문자열 날짜를 datetime으로 변환 (0) | 2023.06.08 |