编写一个返回客户主体类型的函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写一个返回客户主体类型的函数相关的知识,希望对你有一定的参考价值。
我有一组数据。它包含客户名称和债务。如果债务超过250,则被认为是“沉重”,从200到249为“中等”,从0-199为“轻”。
数据看起来像这样:
Name Debt
John $160
Alex $210
Mike $260
我想编写一个函数,如果用户在InputBox中输入'John',则在MsgBox中返回'light'。我为客户创建了一个类。
到目前为止我所拥有的看起来像这样:
Function ReadDebtType(amount As Integer) As Collection
InputBox ("Enter Customer Name (must exist)")
Dim Name As String
Name = InputBox.value
Dim rg As Range
Set rg = Worksheets("Data").Range("A3").CurrentRegion
Dim coll As New Collection
Dim c As CustomerPurchase
Dim DebtType As String
Dim i As Long, amount As Integer
For i = 4 To rg.Rows.Count
amount = rg.Cells(i, 9)
If amount < "$200" Then
Set c = New CustomerPurchase
c.CustomerName = rg.Cells(i, 1)
c.CustomerName = rg.Cells(i, 2)
c.CustomerName = rg.Cells(i, 3)
c.CustomerName = rg.Cells(i, 4)
c.CustomerName = rg.Cells(i, 5)
If pAmount < "$200" Then DebtType = "light"
ElseIf pAmount > "$249" Then DebtType = "heavy"
Else: DebtType = "medium"
End If
End Function
但是我很失落。任何帮助。此功能也需要在客户类模块中还是可以在普通模块中?
答案
为什么要重新发明轮子?使用查找功能可以更有效地完成此操作。
=LOOKUP(B1,0,200,250,"light","medium","heavy")
如果您需要VBA用户表格中的表格,则可以使用Application.WorksheetFunction.Lookup
另一答案
这里是使用@teylyn的响应的VBA实现。如果找不到人名,则会引发错误。假定您的数据在A和B列中。
Option Explicit
Public Sub CheckName()
Dim vName As String
Dim vSheet As Worksheet
Dim vDebtAmount As Double
Dim vDebtType As String
Dim vDebtLimit As Variant
Dim vDebtDesc As Variant
Set vSheet = Application.ActiveSheet
vDebtLimit = Array(0, 200, 250)
vDebtDesc = Array("Light", "Medium", "Heavy")
vName = Application.InputBox("Enter Name", "Debt Assessment")
vDebtAmount = Application.WorksheetFunction.VLookup(vName, vSheet.Range("A:B"), 2, False)
vDebtType = Application.WorksheetFunction.Lookup(vDebtAmount, vDebtLimit, vDebtDesc)
MsgBox vDebtType
End Sub
以上是关于编写一个返回客户主体类型的函数的主要内容,如果未能解决你的问题,请参考以下文章
错误消息:“函数声明了一个不透明的返回类型,但它的主体中没有返回语句来推断基础类型”