我正在开发一个任务,用户首先输入一列从“A”到“Z”,然后输入一个从1到20的行号。我必须写一个函数getIntData(col为String,row为Integer) as Integer,返回活动工作表中该单元格的内容,并在消息框中显示。如果数字是最大负整数显示而不是带有感叹号的消息框。 函数getIntData返回一个Integer值。如果单元格的内容不是数字,则返回最大可能的负值(-2 ^ 15),即-32768。
我已经为函数getIntdata()编写了一些代码,但是它不能生成整数值。任何人都可以看看我错过了什么。另外,请指导我如何通过Sub程序运行功能。
Sub getIn()
Dim Row As Integer
Dim Column As String
Column = InputBox("Please enter the column letter from A-Z", "Column Letter")
Row = InputBox("Please enter the row number from 1-20", "Row Number")
Debug.Print getIntData(Column, Row)
End Sub
Function getIntData(Col As String, Rw As Integer) As Integer
Dim Result As Variant
If Col = "" Or Rw < 1 Then
Result = "Invalid inputs"
ElseIf Not IsNumeric(Range(Col & Rw).Value) Then
Result = -32768
ElseIf Range(Col & Rw).Value <= -32768 Then
Result = "!"
ElseIf Range(Col & Rw).Value >= 32767 Then
Result = "Now what?"
Else
Result = Range(Col & Rw).Value
End If
MsgBox Result
' return value to caller
getIntData = Result
End Function
答案 0 :(得分:0)
您需要getIntData = ...
从函数
您还应该处理其他一些错误案例
尝试将其作为一个定位器
Function getIntData(Col As String, Rw As Integer) As Integer
Dim Result As Variant
If Col = "" Or Rw < 1 Then
Result = "Invalid inputs"
ElseIf Not IsNumeric(Range(Col & Rw).Value) Then
Result = -32768
ElseIf Range(Col & Rw).Value <= -32768 Then
Result = "!"
ElseIf Range(Col & Rw).Value >= 32767 Then
Result = "Now what?"
Else
Result = Range(Col & Rw).Value
End If
MsgBox Result
' return value to caller
getIntData = CInt(Result)
End Function
从Sub try
调用它Sub Demo()
Debug.Print getIntData("A", 1)
End Sub