基于相邻单元格值返回响应
我对原始问题进行了一些调整。首先,需要提醒的一点是,我不是任何一个想象中的VBA精英,所以这正是我试图一起解析以简化工作流程。基于相邻单元格值返回响应
考虑到给出的评论,我决定在隐藏的单元格中包含公式,这将有助于简化该过程,但我仍然收到错误并且不确定导致它们的确切原因。我有一列(第3-1500行,第col.U)返回星期几的名称(它正在读取输入到列C(行3-1500)的日期值的“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
不能在单元格的值赋给声明为范围的变量。
根据你的代码,它看起来像你希望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
谢谢您的帮助。在“Set X = Worksheets(”Sheet1“)一行中,我得到一个错误”Object required“。任何猜测我可能会丢失什么? – user3794203 2015-02-25 16:11:47
我编辑了答案,忘记从Set of那条线。 – guitarthrower 2015-02-25 20:38:40
如果我决定去实施一个工作表公式的路线,如果有一种方法来指定三个不同的可能性?即如果我想根据日期是vbSunday(“SUNDAY”),vbSaturday(“Saturday”)还是任何其他vbweekdays(“否”),想要三种不同的可能答案? – user3794203 2015-02-25 16:36:55
WORKDAY()返回表示星期几的数字,在我的示例中1 =星期一,2 =星期二等。因此,您只需测试该数字的值 – 2015-02-25 16:43:51