根据相邻单元格值返回响应

我对原来的问题做了一些调整。 首先,我不是想象中的任何一个VBA精英,所以这正是我试图一起parsing,以便于工作stream程。

考虑到给出的意见,我决定在隐藏的单元格中包含公式,这将有助于简化这个过程,但是我仍然得到错误,我不确定究竟是什么导致了它们。 我有一个列(行3-1500,col.U),返回星期几的名称(它正在读取input到列C(行3-1500)date值的“dddd”)和那么我试图让列M根据存储在列U中的值返回“是”,“否”或“星期天”…我不断收到“应用程序定义或用户定义的错误”消息,我真的不知道错误来自哪里。

注:这个子是在我的工作表模块的特定的工作表,我试图把它作为一个公共模块外移动,但它仍然抛出错误。

Sub IsWeekend() For i = 3 To 1500 If Cells(i, 3) <> 0 And Cells(i, 20) <> "" Then If Range("U3:1500") = "Sunday" Then Range("M3:1500") = "Sunday" ElseIf Range("U3:1500").Text = "Saturday" Then Range("M3:1500") = "Yes" Else Range("M3:1500") = "No" End If End If Next i End Sub 

谢谢!

在任何情况下,你都不应该为此使用VBA – 一个工作表公式就足够了:


= IF(WEEKDAY(A1,2)<6, “否”, “是”)


但事实上,你得到一个应用程序错误,而不是'下标超出范围'的错误会告诉我,你可能有这个代码在错误的地方 – 可能在工作表模块,而不是代码模块?

另外,如果这个代码被更改事件调用,那么你真的应该使用手动事件处理来停止无限循环发生。

这条线给你你的错误

 Set X = Worksheets("Sheet1").Cells(i,3).Value 

您不能将单元格的值分配给作为范围声明的variables。

根据你的代码,看起来你希望X是文本而不是Range对象。

这是你的代码应该看起来像(我认为):

 Sub weekcheck() Dim X As String For i = 3 To 1500 If Worksheets("Sheet1").Cells(i,3).Value <> 0 Then X = Worksheets("Sheet1").Cells(i,3).Value If X = True Then Worksheets("Sheet1").Cells(i,3).Value = "Yes" ElseIf X = False Then Worksheets("Sheet1").Cells(i,3).Value = "No" End If End If Next i End Sub