我是VBA的新手,需要一些帮助。我正在尝试写一些名为'ROLLUP'的表单中的内容,如果单元格H5包含字母“jan”,那么我想从名为'Project'的单元格中粘贴值单元格I97 :I102在名为“Detail”单元格H38:H43的工作表中。以下是我的代码,没有任何反应。任何帮助?
Option Explicit
Private Sub ETC_pop()
month = Worksheets("ROLLUP").Range("H5")
If ws.Name = "Detail" Then
If InStr(month, ("Jan")) > 0 Then
Worksheets("Detail").Range("H38:H43").Value = Worksheets("Project").Range("I97:I102").Value
End If
End If
End Sub
答案 0 :(得分:0)
您可以使用两个部分制作一个If语句
Private Sub ETC_pop()
If Sheets("ROLLUP").Range("H5").Text="Jan" Then
Sheets("Detail").Range("H38:H43").Copy
Sheets("Project").Range("I97:I102").PasteSpecial xlPasteValues
End If
End Sub
编辑:
为了说明包含日期的H5,我们想要使用MONTH()函数,例如:
Private Sub ETC_pop()
If Month(Sheets("ROLLUP").Range("H5"))=1 Then
Sheets("Detail").Range("H38:H43").Copy
Sheets("Project").Range("I97:I102").PasteSpecial xlPasteValues
End If
End Sub
答案 1 :(得分:0)
最好不要使用与函数类似的变量Month
,而是使用不同的名称,例如myMonth
。
其他注释在代码中(作为注释)。
Option Explicit
Private Sub ETC_pop()
Dim myMonth As String
myMonth = Worksheets("ROLLUP").Range("H5")
'If ws.Name = "Detail" Then '< -- not needed according to your post
' another option >> use if Case In-sensitive
' If UCASE(myMonth) Like "*JAN*" Then
If myMonth Like "*jan*" Then
Worksheets("Detail").Range("H38:H43").Value = Worksheets("Project").Range("I97:I102").Value
End If
'End If
End Sub