索引,匹配功能无法识别短信格式单元格

时间:2017-03-29 17:15:22

标签: excel-vba vba excel

我的TextBox包含超过15位的数字。当我将文本框值复制到excel单元格时,从数字15开始excel会将其更改为零数字。如果单元格格式为数字,这是Excel的方式。我将单元格格式从数字更改为文本,并手动输入数字及其工作。

但是当我在宏上使用IndexMatch函数时,它不起作用我得到了

  

运行时错误1004“无法获取匹配属性   WorksheetFunction类

这是我用于索引,匹配函数

的代码
Dim b As Double

b = TxtCvNo.Text

With Application.WorksheetFunction    
    If .CountIf(Sheet2.Range("G:G"), b) = 1 Then    
        TxtCVId.Text = .Index(Sheet2.Range("A:A"), .Match((b), Sheet2.Range("G:G"), 0))     
    Else

bTextBox值。

Match函数无法识别b,因为此值在Excel单元格中输入为“text”

如何将文本框值作为文本复制到单元格中以避免数字15,16等等更改为零。如何修复索引,匹配后的函数。

我的数据屏幕截图。我使用IndexMatch来确定优惠券1,2,3是否已用作优惠券参考,然后告诉我ID响应者使用该优惠券。 screen shot data

1 个答案:

答案 0 :(得分:0)

尝试下面的代码(代码注释中的解释):

Option Explicit

Sub IndexMatchConv()

Dim b As String
Dim Res As Variant

' for my test format and set a value with 21 digits as Text in cell "G2"
Sheet2.Range("G2").NumberFormat = "@" ' format as Text
Sheet2.Range("G2").Value = "123456789112233445566"
b = Sheet2.Range("G2").Value
MsgBox Len(b) ' <-- result 21

With Application.WorksheetFunction
    Res = .CountIf(Sheet2.Range("G:G"), b)
    If .CountIf(Sheet2.Range("G:G"), b) = 1 Then
        Res = .Match((b), Sheet2.Range("G:G"), 0) < --Res = 2
        'TxtCVId.Text = .Index(Sheet2.Range("A:A"), .Match((b), Sheet2.Range("G:G"), 0))
    Else
        ' do something
    End If
End With

End Sub