if语句在VBA中粘贴值

时间:2017-03-09 18:19:17

标签: excel vba excel-vba

我是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    

2 个答案:

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