如何通过VBA Excel中的函数获取单元格值

时间:2013-11-13 11:19:13

标签: vba excel-vba excel-vba-mac excel

我正在开发一个任务,用户首先输入一列从“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

1 个答案:

答案 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