2014-10-30 129 views
-1

我需要找出将单元格的值复制到工作表中的其他单元格的方法。我正在考虑一个循环,但我不知道如何去做这件事。使用循环将单元格的值复制到多个单元格中

例如,我希望我的循环从单元格“B16”开始,遍历列B中的每个单元格,直到它到达具有值“自动化表格:”的单元格。在这之间,如果一个单元格包含任何值/字符串,则它应该从当前位置移动5列,并将值“Hello”指定给该单元格。

这是我现在有,但它不是,它应该工作:

Sub TC_data() 
    Dim x As String 
    Dim found As Boolean 
    ' Select first line of data. 
    Range("B16").Select 
    ' Set search variable value. 
    x = "*string*" 
    ' Set Boolean variable "found" to false. 
    found = False 
    ' Set Do loop to stop at a non-empty cell. 
    Do Until ActiveCell.Value = "Automation Table:" 
    'Do Until IsEmpty(ActiveCell) 
    ' Check active cell for search value. 
    If ActiveCell.Value = x Then 
     ActiveCell.Offset(0, 5).Select 
     ActiveCell.Offset(0, 5).Value = "Hello" 
     found = True 
     Exit Do 
    End If 
    ' Step down 1 row from present location. 
    ActiveCell.Offset(1, 0).Select 
    Loop 
End Sub 

它忽略了所有其他的语句,只是去同值的单元格“自动化表:”

+0

恐怕您将C3复制到G16的单个示例没有充分解释为什么值被复制以及要通过查找某些未知条件来循环哪些单元。 – Jeeped 2014-10-30 23:23:15

+0

对不起,如果以前的帖子不够解释。我编辑了这篇文章。请您的帮助/建议将非常感激。 – 2014-11-03 17:54:27

回答

0

你应该尽可能避免使用.Select来支持直接单元和范围引用。

Sub B2AutoTable() 
    Dim b As Long, bat As Long, x As String 
    bat = Application.Match("Automation Table:", Columns(2), 0) - 1 
    x = LCase("*String*") 
    For b = 16 To bat 
     'this option is for a pattern match to x 
     If LCase(Cells(b, "B").Value) Like x Then Cells(b, "G") = "ahoj" 
     'the next line is for any value or string 
     'If CBool(Len(Cells(b, "B").Value)) Then Cells(b, "G") = "ahoj" 
    Next b 
End Sub 

我给你两个选择,为你的描述似乎从您发布的代码段不同。

这假设自动化表格:值在B列的某处,最好在第16行以下。如果这不是绝对的确定性,那么您将必须处理一些错误控制。如果您遇到问题,请回复并尝试,我会尽力提供帮助。

+0

非常感谢。我对你的代码块做了很小的改动,它的工作就像我想要的那样。非常感谢您的帮助。 – 2014-11-03 21:15:12

相关问题