2015-05-09 340 views
1

我有一个从表中自动部分填充的表单。有一个组合,在那里选择交易次数,然后有一个文本框,我想填写合作伙伴名称(在表格中搜索)。窗体原因运行时错误-2147352571(80020005)

我花了很长时间才弄清楚我的代码中有什么问题。最后我管理了代码工作,但它对我来说看起来很神秘,而且它不干净。

原始代码:

Private Sub ComboTransaction_Change() 
    Dim ws_su As Worksheet 
    Set ws_su = Worksheets("Sale Unsettled") 
    TextPartner = ws_su.Range("SaleUnsettled_Start").Offset(Application.WorksheetFunction.Match(Val(ComboTransaction), ws_su.Range("SaleUnsettled_Transactions"), 0), 1) 
End Sub 

的 “解决方案”:

Private Sub ComboTransaction_Change() 
    Dim ws_su As Worksheet 
    Set ws_su = Worksheets("Sale Unsettled") 
    PartnerValue = ws_su.Range("SaleUnsettled_Start").Offset(Application.WorksheetFunction.Match(Val(ComboTransaction), ws_su.Range("SaleUnsettled_Transactions"), 0), 1) 
    TextPartner = PartnerValue 
End Sub 

为什么我必须通过PartnerValue做到这一点,这对我来说是一个谜。不仅它困扰我,因为它弄乱了代码(还有更多值必须以相同的方式填充),但是我也有另一种形式(Purchase等),它没有这个奇怪的补丁就可以工作。

我想摆脱如果是这样,如果你有任何想法有什么问题,我会感激你的消息。

TextPartner和PartnerValue的唯一区别在于TextPartner是表单中的TextBox,而PartnerValue不是。

+0

运行时错误意味着它是一个类型不匹配...你尝试使用'TextPartner.Text = ws_su.Range .....'? –

+0

谢谢彼得,这个工程。虽然我仍然不知道为什么我不需要在其他形式中使用相同的文本。将使用你的建议,它比我的解决方案好得多。 – gastan

+0

Thx。我把它变成了一个答案。由于这个原因......你在模块顶部的代码中有任何选项语句吗? –

回答

0

运行时错误意味着它是类型不匹配。

尝试使用

TextPartner.Text = ws_su.Range("SaleUnsettled_Start").Offset(_ 
    Application.WorksheetFunction.Match(Val(ComboTransaction), _ 
    ws_su.Range("SaleUnsettled_Transactions"), 0), 1) 
相关问题