VLookUp无法正常工作 - 无法分配属性

时间:2018-03-05 15:53:50

标签: excel vba excel-vba vlookup

我的问题是,当使用VlookUp时,我会收到错误:

无法分配WorksheetFunction-Object的VLookup属性

        ' LookUp missing Data
        Dim lookupRange As Range
        Set lookupRange = Sheets("Kundenlisten HLK 2018").Range("A1:Y10354")

        ' Fill in Companyname
        Dim tmp As String
        tmp = Values(0)
        tmp = TrueTrim(tmp)
        testing.Cells(8, counter) = Application.WorksheetFunction.VLookup(tmp, lookupWS.Range("A2:Y10354"), 2, False)

        Values = None
        counter = counter + 1

lookupWS 是工作表的名称 正如您所看到的,我尝试查找的表填充了从A到Y的值。第一列是我要查找的键,但随后出现上述错误。 tmp 变量是一个具有唯一ID的String,用于查找缺失值,而“2”应该是Range中第二列中的公司名称。

我查看了文档,但是类型和一切都很好,我甚至在调试时检查过。

testing.Cells(8,counter)也不能成为问题的根源,因为我之前正在使用它

testing.Cells(28, counter) = Left(mail.ReceivedTime, 10)

并且有效

1 个答案:

答案 0 :(得分:4)

如果没有任何数据,很难知道问题是什么,但这里可以帮助您找到正确的方向。

  

使用FindOffset比使用WorksheetFunction.Vlookup更好   VBA中的Sub Test() Dim valueFound As Range Set valueFound = lookupWS.Range("A2:A10354").Find(What:="Something", lookat:=xlWhole) 'xlWhole is equivalent to FALSE in VLOOKUP If valueFound Is Nothing Then MsgBox "Nothing found" Else MsgBox valueFound.Offset(0, 1) 'offsetting by 1 is equivalent to using 2 in a VLOOKUP End If End Sub

这样的结果会给你完全相同的结果,但你有更多的控制权:

    @Bean
    public ConsumerSupportService consumerSupportService() {
        JaxWsProxyFactoryBean jaxWsProxyFactoryBean = new JaxWsProxyFactoryBean();
        jaxWsProxyFactoryBean.setServiceClass(ConsumerSupportService.class);
        jaxWsProxyFactoryBean.setAddress("https://www.someservice.com/service?wsdl");
        jaxWsProxyFactoryBean.setBindingId(SOAPBinding.SOAP12HTTP_BINDING);
        WSAddressingFeature wsAddressingFeature = new WSAddressingFeature();
        wsAddressingFeature.setAddressingRequired(true);
        jaxWsProxyFactoryBean.getFeatures().add(wsAddressingFeature);

        ConsumerSupportService service =  (ConsumerSupportService) jaxWsProxyFactoryBean.create();

        Client client = ClientProxy.getClient(service);
        AddressingProperties addressingProperties = new AddressingProperties();
        AttributedURIType to = new AttributedURIType();
        to.setValue(applicationProperties.getWex().getServices().getConsumersupport().getTo());
        addressingProperties.setTo(to);
        AttributedURIType action = new AttributedURIType();
        action.setValue("http://serviceaction/SearchConsumer");
        addressingProperties.setAction(action);
        client.getRequestContext().put("javax.xml.ws.addressing.context", addressingProperties);

        setClientTimeout(client);

        return service;
    }

    private void setClientTimeout(Client client) {
        HTTPConduit conduit = (HTTPConduit) client.getConduit();
        HTTPClientPolicy policy = new HTTPClientPolicy();
        policy.setConnectionTimeout(applicationProperties.getWex().getServices().getClient().getConnectionTimeout());
        policy.setReceiveTimeout(applicationProperties.getWex().getServices().getClient().getReceiveTimeout());
        conduit.setClient(policy);
    }