VBA错误:";调用的对象已与其客户端断开连接;

VBA错误:";调用的对象已与其客户端断开连接;,vba,excel,Vba,Excel,我正在尝试编写一个宏,将x/y坐标匹配到适合它们的椭圆。我在代码的“Else”行中得到了自动化错误。我已经看过很多其他的帖子,但是我不知道我的代码有什么问题。非常感谢您的帮助。谢谢大家! Private Sub CommandButton1_Click() Dim XR As Integer Dim XC As Integer Dim YR As Integer Dim YC As Integer Dim areaR As Integer Dim areaC As Integer Dim hR

我正在尝试编写一个宏,将x/y坐标匹配到适合它们的椭圆。我在代码的“Else”行中得到了自动化错误。我已经看过很多其他的帖子,但是我不知道我的代码有什么问题。非常感谢您的帮助。谢谢大家!

Private Sub CommandButton1_Click()
Dim XR As Integer
Dim XC As Integer
Dim YR As Integer
Dim YC As Integer
Dim areaR As Integer
Dim areaC As Integer
Dim hR As Integer
Dim hC As Integer
Dim kR As Integer
Dim kC As Integer
Dim aR As Integer
Dim aC As Integer
Dim bR As Integer
Dim bC As Integer
Dim angleR As Integer
Dim angleC As Integer
Dim matchR As Integer
Dim matchC As Integer
XR = 2
XC = 1
YR = 2
YC = 2
Do Until ThisWorkbook.Sheets("Sheet1").Cells(XR, XC).Value = ""
ThisWorkbook.Sheets("Sheet1").Activate
areaR = 2
areaC = 6
hR = 2
hC = 7
kR = 2
kC = 8
aR = 2
aC = 9
bR = 2
bC = 10
angleR = 2
angleC = 11
matchR = XR
matchC = 12
    Do Until ThisWorkbook.Sheets("Sheet1").Cells(hR, hC).Value = ""
        If (((((ThisWorkbook.Sheets("Sheet1").Cells(XR, XC).Value) _
             - (ThisWorkbook.Sheets("Sheet1").Cells(hR, hC).Value)) * _
             Cos((ThisWorkbook.Sheets("Sheet1").Cells(angleR, angleC).Value)) _
             + ((ThisWorkbook.Sheets("Sheet1").Cells(YR, YC).Value) - _
             (ThisWorkbook.Sheets("Sheet1").Cells(kR, kC).Value)) * Sin _
             ((ThisWorkbook.Sheets("Sheet1").Cells(angleR, angleC).Value))) ^ 2) _
             / ((Cells(aR, aC).Value) ^ 2)) + (((((Cells(XR, XC).Value) - _
             (Cells(hR, hC).Value)) * Sin((ThisWorkbook.Sheets("Sheet1").Cells _
             (angleR, angleC).Value)) - ((ThisWorkbook.Sheets("Sheet1").Cells(YR, YC).Value) _
             - (ThisWorkbook.Sheets("Sheet1").Cells(kR, kC).Value)) _
             * Cos((Cells(angleR, angleC).Value))) ^ 2) / ((Cells(bR, bC).Value) ^ 2)) _
             <= 1 Then
             ThisWorkbook.Sheets("Sheet1").Cells(matchR, matchC).Value = _
             ThisWorkbook.Sheets("Sheet1").Cells(areaR, areaC)
       Else
             areaR = areaR + 1
             hR = hR + 1
             kR = kR + 1
             aR = aR + 1
             bR = bR + 1
             angleR = angleR + 1
       End If
    Loop
   XR = XR + 1
   YR = YR + 1
Loop
Private子命令按钮1\u单击()
将XR设置为整数
作为整数的Dim XC
作为整数的Dim YR
作为整数的Dim YC
作为整数的Dim areaR
Dim areaC作为整数
Dim hR作为整数
将hC设置为整数
作为整数的Dim kR
作为整数的Dim kC
作为整数的Dim-aR
将aC设置为整数
Dim bR作为整数
作为整数的Dim bC
作为整数的暗淡垂钓者
作为整数的Dim-angleC
作为整数的Dim matchR
作为整数的Dim matchC
XR=2
XC=1
年=2
YC=2
执行此工作簿.Sheets(“Sheet1”).Cells(XR,XC).Value=“”
此工作簿。工作表(“工作表1”)。激活
面积=2
面积c=6
hR=2
hC=7
kR=2
kC=8
aR=2
aC=9
bR=2
bC=10
垂钓者=2
角c=11
匹配r=XR
匹配C=12
执行此工作簿.Sheets(“Sheet1”).Cells(hR,hC).Value=“”
如果(()(()(("ThisWorkbook.Sheets("Sheet1))单元格(XR,x_
-(此工作簿。工作表(“表1”)。单元格(hR、hC)。值)*_
Cos((ThisWorkbook.Sheets(“Sheet1”).单元格(angleR,angleC.Value))_
+((本工作簿表(“表1”).单元格(年,年)。值)-_
(此工作簿.Sheets(“Sheet1”).单元格(kR,kC).Value))*Sin_
((ThisWorkbook.Sheets(“Sheet1”).Cells(angleR,angleC.Value))^2)_
/((单元格(aR,aC.Value)^2))+((((((单元格(XR,XC.Value))-_
(单元格(hR,hC).Value))*Sin((此工作簿.Sheet1)单元格_
(angleR,angleC).Value]-((此工作簿.Sheet1)单元格(YR,YC).Value)_
-(此工作簿.表格(“表格1”).单元格(kR,kC.值))_
*Cos((单元格(垂钓者,垂钓者.Value)))^2/(单元格(bR,bC.Value)^2))_

这是很多代码,用单元格引用值进行直接数学运算很难理解……甚至对你来说也是如此

这可能不是一个很好的答案,但是如果您在循环中创建变量(是的,更多变量),那么您的代码将更容易为每个人阅读,并且很可能会出现错误

因此,不要在计算中使用
ThisWorkbook.Sheets(“Sheet1”).Cells(XR,XC).Value
,首先要执行以下操作:
X=ThisWorkbook.Sheets(“Sheet1”).Cells(XR,XC).Value

但不要就此止步。包括可自我描述代码和计算过程的中间变量

这将有望让您看到它真正的功能代码

isMatch = cosX <= 1
If isMatch Then

isMatch=cosX添加到@LimaNightHawk:您还可以使用With语句来增加可读性[