如果我有以下列:
ColA ColB
---- ----
emp NUMBER
dept DATE
name VARCHAR
我需要一个可以使用的vba函数,如下所示:
If IS_NUMBER(A1) = "T" Then
//stuff
End If
可以简单地修改为:
If IS_VARCHAR(A3) = "T" Then
//stuff
End If
实际上,如果它的工作方式可能会更好(基本上第二个参数是在右边的单元格上进行查找):
If DataType(A3, "VARCHAR") = "T" Then
//stuff
End If
答案 0 :(得分:1)
如果您将查找表命名为命名范围,例如map
,则可以使用以下代码:
Option Explicit
Function get_type(field As Variant)
Dim map As Range
Set map = Range("map")
On Error Resume Next
get_type = WorksheetFunction.vlookup(field, map, 2, 0)
On Error GoTo 0
End Function
Sub test_get_type()
Debug.Print get_type("emp")
Debug.Print get_type("dept")
Debug.Print get_type("name")
End Sub
函数get_type()
只是充当vlookup()
函数的直通。
答案 1 :(得分:0)
以下是我最终编码的方式:
Public Function get_data_type(Cell As Range, Text As String) As String
Dim dtype As String
dtype = Cell.Offset(0, 1).Value
If dtype = Text Then
get_data_type = "T"
Else
get_data_type = "F"
End If
End Function
Sub test()
If get_data_type(Range("F5187"), "VARCHAR") = "T" Then
'// do stuff
End If
End Sub
另一种方法:
Public Function get_data_type(Cell As Range) As String
Dim dtype As String
dtype = Cell.Offset(0, 1).Value
get_data_type = dtype
End Function
Sub test()
If get_data_type(Range("F5187")) = "VARCHAR" Then
'//stuff
End If
End Sub