我的TextBox
包含超过15位的数字。当我将文本框值复制到excel单元格时,从数字15开始excel会将其更改为零数字。如果单元格格式为数字,这是Excel的方式。我将单元格格式从数字更改为文本,并手动输入数字及其工作。
但是当我在宏上使用Index
,Match
函数时,它不起作用我得到了
运行时错误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
b
是TextBox
值。
Match
函数无法识别b
,因为此值在Excel单元格中输入为“text”
如何将文本框值作为文本复制到单元格中以避免数字15,16等等更改为零。如何修复索引,匹配后的函数。
我的数据屏幕截图。我使用Index
和Match
来确定优惠券1,2,3是否已用作优惠券参考,然后告诉我ID响应者使用该优惠券。
screen shot data
答案 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