2017-04-06 95 views
1

下面是我目前使用的代码,我可以单击该按钮,每次单击该按钮时,单元格选择会向下移动1 我需要的是在F3上开始选择,然后选择直到F35左右,但是当我选择范围时,它不会逐个选择单元格。每次单击按钮时都能够选择下一个单元格Excel VBA

这里是我的代码:

Dim rng As Range 
Dim row As Range 
Dim cell As Range 

    Set rng = Range("F2") 
    rng.Select 
    For Each row In rng.Rows 
     For Each cell In row.Cells 
     ActiveCell.Offset(1, 0).Select 
     Next cell 
     Range("G66") = ActiveCell 
    Next row 
+0

您正在尝试移动活动单元格?换句话说,你使用单元格'F3'激活宏来运行宏,当你运行它时,你只需要'F4'是活动的?你对活动单元做什么?最好避免使用['.Select' /'.Activate'](https://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros)。除了选择一个单元外,你的循环并没有做任何事情。你可以完全跳过它,因为最后你做'Range(“G66”)= ActiveCell' ... – BruceWayne

+0

那么基本上im循环通过电子邮件地址,以便它所在的每个活动单元格将显示在单元格G66上。 我的目标是点击一个按钮,然后点击下一个按钮,在一个范围内向下移动单元格。 –

+1

你的最终目标是什么?只需简单地在'G66'中显示一个电子邮件地址?这应该在1秒内运行,所以所有的电子邮件地址仅可见*秒* – BruceWayne

回答

0

,如果你有一个Form按钮叫Button1然后将其附加一个名为Button1_Click()子(或什么,但与附加分的名称一致),并将以下代码中的任何模块中:

Option Explicit 

Dim notFirst As Boolean 
Dim rng As Range 

Sub Button1_Click() 
    If notFirst Then 
     If rng.row = 35 Then 
      MsgBox "Sorry: you've already reached last valid cell in column F" 
      Exit Sub 
     Else 
      Set rng = rng.Offset(1) 
     End If 
    Else 
     Set rng = Range("F3") 
     notFirst = True 
    End If 

    Range("G66").Value = rng.Value 
End Sub 

如果有一个ActiveX按钮称为Button1然后写入相同的代码如上述其薄片代码窗格

+0

谢谢!它似乎有点工作。虽然添加代码后,它只添加第一电子邮件地址在G66。当我再次点击按钮它不会去到下一个电子邮件。它说不是第一个是空的 –

+0

你在说什么电子邮件?没有电子邮件跟踪你的问题代码 – user3598756

+0

对不起,它显示的价值而不是电子邮件)在G66.When我再次点击按钮它不会去下一个值。 –

相关问题