结合“如果”的陈述

我正在处理一个Excelmacros,当一个零件号码被扫描到电子表格(在列A中)时,它将自动打开一个与该零件号码相关的PDF文件。 我已经为我想要看的第一个单元工作了,但是之后就陷入了困境。 我可以添加一堆“if”语句,但必须有一种方法来清理它,而不是拥有数百个“if”语句。 我需要从单元格A9开始并继续到单元格A209。 以下是我到目前为止。 任何帮助将这些结合到一个更简单的代码将不胜感激。 提前致谢!

Private Sub Worksheet_Change(ByVal Target As Range) Dim varCellvalue As String If Target.Address = "$A$9" Then varCellvalue = Range("A9").Value ThisWorkbook.FollowHyperlink "F:\ITEM PART MASTER\" & varCellvalue & "\" & varCellvalue & " Pack.pdf" End If If Target.Address = "$A$10" Then varCellvalue = Range("A10").Value ThisWorkbook.FollowHyperlink "F:\ITEM PART MASTER\" & varCellvalue & "\" & varCellvalue & " Pack.pdf" End If If Target.Address = "$A$11" Then varCellvalue = Range("A11").Value ThisWorkbook.FollowHyperlink "F:\ITEM PART MASTER\" & varCellvalue & "\" & varCellvalue & " Pack.pdf" End If 

这可以继续下去,但我认为必须有一个更有效的方法将这些结合成一个简单的陈述。

用你的代码,你所需要的只是简单而简短的东西(见下面的代码)

 Private Sub Worksheet_Change(ByVal Target As Range) Dim varCellvalue As String ' run your code only if a cell inside the Range("A9:A11") has been changed If Not Intersect(Target, Range("A9:A11")) Is Nothing Then varCellvalue = Target.Value ThisWorkbook.FollowHyperlink "F:\ITEM PART MASTER\" & varCellvalue & "\" & varCellvalue & " Pack.pdf" End If End Sub 

您可以使用Select Case

 Private Sub Worksheet_Change(ByVal Target As Range) Dim varCellvalue As String Select Case Target.Address Case "$A$9" varCellvalue = Range("A9") Case "$A$10" varCellvalue = Range("A10") Case "$A$11" varCellvalue = Range("A11") End Select ThisWorkbook.FollowHyperlink "F:\ITEM PART MASTER\" & varCellvalue & "\" & varCellvalue & " Pack.pdf" 

或者你可以做得更快,因为你只是将目标的值插入到url中。

 Private Sub Worksheet_Change(ByVal Target As Range) ThisWorkbook.FollowHyperlink "F:\ITEM PART MASTER\" & Target & "\" & Target & " Pack.pdf" 

如果你需要把它限制在几个单元格,而不是每个范围,那么你可以使用一个数组来加载目标单元格,只要检查目标地址是否在那里,然后运行你的代码:

 Private Sub Worksheet_Change(ByVal Target As Range) Dim varCellvalue As String Dim targetCells() As Variant targetCells() = Array("$A$9", "$A$10", "$A$11") If (UBound(Filter(targetCells, Target.Address)) > -1) Then 'This cell is in your array Debug.Print Target.Value ThisWorkbook.FollowHyperlink "F:\ITEM PART MASTER\" & Target.Value & "\" & Target.Value & " Pack.pdf" End If End Sub