2015-03-19 79 views
0

我想感谢任何提前回答并花时间回复此(或其他)帖子的人。这真是一个伟大的社区。Excel VBA;如果列M中的值等于x,则列A应该等于列E

我是VBA的新手,可以做一些小的事情,但是当谈到引用不是R1C1格式的单元格时,我不明白如何继续。 (我买了几本书,我只是在开始的章节,在书中我找不到这个参考)。

我需要做的是从列L的顶部开始,然后逐行往下走。如果列L = 8中的值,那么我需要将列E中的值复制到列A中。如果列L = 7的值,那么我需要将列E中的值复制到列B中。然后,我需要循环通过整个列L直到我到达最后一行。

我收到的错误是:Object_Global的方法范围失败(1004)

什么我是这样的:

Sub CopyVals() 
 

 
Dim lngLoop As Long, lngRow As Long 
 

 
Do Until IsEmpty(ActiveCell) 
 
    If Range("L" & lngLoop).Value = 8 Then 
 
     Range("E" & lngLoop).Copy Range("A" & lngLoop) 
 
     
 
    ElseIf Range("L" & lngLoop).Value = 7 Then 
 
     Range("E" & lngLoop).Copy Range("B" & lngLoop) 
 
    End If 
 
ActiveCell.Offset(1, 0).Select 
 
Loop 
 

 
End Sub

再次 - 谢谢回复这个帖子。我一直在寻找几天,并考虑到具体的需求,我只是从这里到那里拿起代码来帮助我解决问题。

+0

'lngLoop'永远不会被分配任何值,那么将永远是零。没有L0这样的单元,所以在第一次通过循环时会出现错误。 'lngRow'永远不会被使用。你可以用偏移量来完成整个事情,所以你可能不需要这些变量 – barrowc 2015-03-19 03:03:36

回答

0

Sub CopyVals() 
 

 
Dim lngLoop As Long 
 

 
lngLoop = 1 
 

 
    For lngLoop = 1 To Rows.Count 
 
    If Cells(lngLoop, 12).Value = "8" Then Cells(lngLoop, 1).Value = Cells(lngloop, 5).Value 
 

 
    If Cells(lngLoop, 12).Value = "7" Then Cells(lngLoop, 2).Value = Cells(lngloop, 5).Value 
 
    
 
    Next lngLoop 
 
End Sub

+0

Barrowc,非常感谢你的帮助。它运作完美,并使我更趋向于理解我朝着的方向。这是非常赞赏。 – 2015-03-19 17:54:44

相关问题