编写一个返回客户主体类型的函数

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

以上是关于编写一个返回客户主体类型的函数的主要内容,如果未能解决你的问题,请参考以下文章

错误消息:“函数声明了一个不透明的返回类型,但它的主体中没有返回语句来推断基础类型”

如何修复“函数声明了一个不透明的返回类型,但在其主体中没有返回语句来推断基础类型”错误?

类的无参方法

类的无参方法

如何为 apollo 客户端生成片段类型?

CXF编写的客户端调用XFire编写的服务端,返回值为null,没有报错