所以,我试图从ListRow
获取Target
,但我似乎不停地得到错误。目标是将文档中完成的更改上载到服务器。最初我通过ListRows
循环以在文档关闭时上传更改,但现在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
答案 0 :(得分:0)
解决了!因此,在这种情况下,我需要使用lr的Set函数。所以这条线需要看起来像:Set lr = lo.ListRows(Target.row - 5)
我是个傻瓜。