Excel 如何更改调用用户定义函数的不同单元格的值?

Excel 如何更改调用用户定义函数的不同单元格的值?,excel,vba,Excel,Vba,我正在设置一个excel工作表,以便为即将到来的研究生班自动填充办公室轮换。输入将是他们对教授的选择和教授的开放席位数量。当我给每个学生分配一个轮换时段时,我想更新教授的开放座位数的值,但是当我试图给调用单元之外的单元分配一个值时,代码似乎被破坏了 我尝试过在SUB和函数之间切换,但没有效果。似乎VBA根本不允许从不同的单元格更改单元格的值。这是真的吗 Sub DecrementSeats(PIName As String, RotNum As Integer) Dim

我正在设置一个excel工作表,以便为即将到来的研究生班自动填充办公室轮换。输入将是他们对教授的选择和教授的开放席位数量。当我给每个学生分配一个轮换时段时,我想更新教授的开放座位数的值,但是当我试图给调用单元之外的单元分配一个值时,代码似乎被破坏了

我尝试过在SUB和函数之间切换,但没有效果。似乎VBA根本不允许从不同的单元格更改单元格的值。这是真的吗

    Sub DecrementSeats(PIName As String, RotNum As Integer)

        Dim i As Integer, seats As Integer
        Dim c As Range
        seats = 0
        i = 2
        MsgBox ("In decrement")

        For Each c In Worksheets("Student Interest and Rotations").Range("A2:A41")  
            If c.Value = PIName Then
                 MsgBox (c.Value & " is the same as " & PIName)
                 seats = c.Offset(0, (1 + RotNum)).Value
                 MsgBox ("Original seats value is: " & seats)
                 seats = seats - 1
                 c.Offset(0, (1 + RotNum)) = seats
                 MsgBox ("New c.Value value is: " & c.Offset(0, (1 + RotNum)).Value)
                 Exit For
            End If
        MsgBox (c.Value & " is not the same as " & PIName & ". Checking next PI name...")
        Next c

    End Sub

是的,大多数情况下都是这样,但也有例外,例如sub应该可以工作,但它的功能有问题。出了什么问题?你能澄清一下“但是当我试图给调用单元之外的单元赋值时,代码似乎被破坏了”?使用Sub,您通常可以编辑您想要的任何单元格…?当然!抱歉说得含糊不清。消息框行:MsgBox(“新的c.值为:”&c.Offset(0,(1+RotNum)).Value)从未显示,但前面的两行显示得很好,似乎vba不允许从不同的单元格更改单元格的值。这是真的吗不。如果是这样的话,VBA将毫无用处。这是你的全部密码吗?考虑使块结构更容易。如果同一执行路径中的其他代码确实运行,
MsgBox
函数调用将简单地“不运行”,这是毫无意义的-当然,这不仅仅是一个消息框没有显示。
c.Offset(0,…)
是否被写入?