level 2
交代一下背景:在学习调用子函数,然后老师让我们用以下的vba代码展示后,又要用函数形式再试一遍。
全部代码如下:
Sub 客户分类解决方案()
Dim i, score, level
i = 2
Do While Cells(i, 1) <> ""
score = Cells(i, 2)
level = 客户分类(score)
Cells(i, 3) = level
i = i + 1
Loop
End Sub
Function 客户分类(s)
Dim score, level ,s
score = s
If score < 30 Then
level = "温柔型"
ElseIf score < 60 Then
level = "冲动型"
ElseIf score < 90 Then
level = "暴躁型"
Elselevel = "狂暴型"
End If
客户分类 = level
End Function
2024年06月29日 04点06分
2
声明一下s变量类型,如果不声明,那就要强制把s转为数值类型。
2024年06月29日 13点06分
变量混乱,把参数s又拿出来dim s是个大错,参数s不能再次dim,我再外面修改了你的函数
2024年07月08日 06点07分
level 5
你的数学没学好吧大概,10 分 同时小于 30 60 90 结果符合了全部集合的要求。你的集合没分好,所以全部都包含在<90的集合里面了 会有多个结果 按照excel的惯例通常会现实最后执行的一个。这是重新赋值了
2024年06月29日 12点06分
4
@哈根达斯1224MH 用的elseif 不存在多个结果,10就只能满足<30,和后面的没关系
2024年06月29日 13点06分
@烟雨江南ooo 嗯 我也学到了,因为我很少用这么多层 不知道会这样
2024年07月08日 06点07分
首先应该改正 集合的范围 这个逻辑问题,再去检查代码吧
2024年06月29日 12点06分
回复 QQ47436528 :如果这个是一行一行判定的 我再看一下貌似是 方程的格式不对,应该先定义 客户分类这个函数与参数 s的关系 。仔细看了一下你的代码虽然人能明白你要表达什么但是 本身S 和 客户分类 这个没在代码的逻辑上关联上。你看看是不是,我认为是这个问题了
2024年06月29日 16点06分
level 3
客户分类=“冲动型”
你客户分类这个函数都没赋予返回值
2024年07月01日 06点07分
5
level 3
而且每次一看到这些书写格式就烦,最基本的语句流程控制是需要空格的,这样写完自己看都懵
2024年07月01日 06点07分
6
level 12
Function 客户分类(score%) As String
Dim level$
If score < 30 Then
level = "温柔型"
ElseIf score < 60 Then
level = "冲动型"
ElseIf score < 90 Then
level = "暴躁型"
Else
level = "狂暴型"
End If
客户分类 = level
End Function
2024年07月08日 05点07分
7
话说这吧活人还挺多的
2024年07月08日 06点07分
楼主把s作为参数,又dim s,那么这两个s混乱,而且又都没声明变量类型,那么函数不能调用的可能原因: 1.函数变量混乱 2.函数可能不是写在模块里面,而是写在一个不相关的sheet里面,外界不知道有“客户分类”这个函数
2024年07月08日 06点07分