无法在VBA中获取Worsheet_Change上的Target的ListRow
所以,我试图从Target
获得ListRow
,但是我似乎不停地发生错误。 目标是将文档中完成的更改上传到服务器。 最初我ListRows
来上传closures文档时的更改,但是现在ListObjects
已经变得非常大,以至于将数组上传到服务器所用的时间太长。 更快的方式似乎只是简单地上传更改。
我在下面写了一个代码,我得到错误:无效或不合格的参考。 有些函数因为在工作而被忽略,而且与这个问题无关。
Private Sub Worksheet_Change(ByVal Target As Range) Application.Calculation = xlCalculationManual Dim CustomersConn As ADODB.Connection Dim CustomersCmd As ADODB.Command Dim lo As Excel.ListObject Dim ws As Excel.Worksheet Dim lr As Excel.ListRow Dim Customers As Variant Set ws = ThisWorkbook.Worksheets(8) Set lo = ws.ListObjects("TCustomers") Set CustomersConn = New ADODB.Connection Set CustomersCmd = New ADODB.Command lr = .ListRow(Target.row - 5).Index CustomersConn.ConnectionString = SQLConStr CustomersConn.Open CustomersCmd.ActiveConnection = CustomersConn CustomersCmd.CommandText = _ GetUpdateText( _ Intersect(lr.Range, lo.ListColumns("Type").Range).Value, _ Intersect(lr.Range, lo.ListColumns("Customer").Range).Value, _ Intersect(lr.Range, lo.ListColumns("Name").Range).Value, _ Intersect(lr.Range, lo.ListColumns("Contact").Range).Value, _ Intersect(lr.Range, lo.ListColumns("Email").Range).Value, _ Intersect(lr.Range, lo.ListColumns("Phone").Range).Value, _ Intersect(lr.Range, lo.ListColumns("Corp").Range).Value) Debug.Print (CustomersCmd.CommandText) CustomersConn.Close Set CustomersConn = Nothing Set lo = Nothing Set ws = Nothing Set lr = Nothing Application.Calculation = xlCalculationAutomatic End Sub
解决了! 所以,在这种情况下,我需要使用lr的Set函数。 所以行需要看起来像: Set lr = lo.ListRows(Target.row - 5)
我是一个傻瓜。