如何遍历列表,按照超链接,并删除相应的工作表

时间:2016-11-02 01:54:54

标签: vba excel-vba hyperlink macros excel

我有一个包含大约150个工作表的工作簿。第一个工作表是一个表/一组信息,大约150行长,16列宽,名为“log”。在col。 “log”工作表的“j”是包含new或closed的单元格值。在col。 'm'是工作簿中其他工作表的超链接。代码的目标是遍历“日志”表的每一行,并确定它是否包含col关闭。学家如果是,请按照同一行中的相应超链接删除工作表。问题是我的情况是超链接由多行共享。例如,第5行超链接到工作表2和第15行超链接到工作表2.我的问题是当代码到达第15行并且跟随超链接时没有什么可以遵循,因此,“日志”是活动工作表并且“日志”最终被删除,然后我的代码就会被炸毁。有没有办法编写代码,说明如果活动工作表是不删除它的日志表,或者跳过当前用于删除工作表的代码而是继续循环?

这是代码......

Sub Deletelinks()

'Macro will check to see if status is closed and if so it will
'delete the supporting worksheet by following the hyperlink in
'same row

Dim count As Integer
Dim lrow As Long
Dim Rng As Range
Set Rng = Range("J2")
lrow = Worksheets("log").Range("J" & Rows.count).End(xlUp).row - 1

Application.ScreenUpdating = False
Application.DisplayAlerts = False

For count = 1 To lrow
    Sheets("log").Activate
    Rng.Offset(count - 1, 0).Activate
    Select Case ActiveCell.Value = "Closed"
        Case True
            If ActiveCell.Offset(0, 3).Value = "Click" Then
            ActiveCell.Offset(0, 3).Hyperlinks(1).Follow
                If ActiveSheet.Name <> "log" Then
                    With ActiveSheet
                        ActiveWindow.SelectedSheets.delete
                    End With
                End If
            End If
        Case False
    End Select
 Next count


Application.DisplayAlerts = True
Application.ScreenUpdating = True


End Sub

1 个答案:

答案 0 :(得分:0)

更简单的方法是迭代列中的超链接,并使用超链接的属性来引用相邻的单元格以查看它是否等于override func viewDidLoad() { super.viewDidLoad() webView.addObserver(self, forKeyPath: "URL", options: .New, context: nil) } override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) { print("url:\(webView.URL)") } ;然后,如果是,删除超链接目标工作表并清除超链接。

Closed