vba循环抛出错误

时间:2012-03-27 07:08:26

标签: excel-vba excel-2007 vba excel

我在一张excel中有很多张。

我要做的是按照列标题合并到主表中。

如果任何工作表中没有列,则表示在主工作表中填写“不可用”,以获取这些数据

根据我的理解编写的代码......根据我的理解...我在这里粘贴的代码是正确的..但是循环中有一个问题..我不在它的位置..

任何人都可以帮助我解决这个问题...

Sub Sathish()
    'Declaration

    Dim ii
    Dim j As Integer
    Dim a As Integer
    Dim i As Integer
    Dim rrange As Range
    Dim trange As Range

    'Assigning

    a = Worksheets.Count
    ii = Array("saaa", "Description", "saaa", "Model", "sathish")

   Dim aa As Integer

    'Practical
    'Call Create_new_sheet
    For j = 1 To a
        Sheets(j).Select
        If Not ActiveSheet.Name = "Master" Then
            For i = 1 To 3
                Rows("1:1").Select
                For Each trange In Selection
                    If trange.Value = ii(i) Then
                        Selection.Find(What:=ii(i), After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
                        ActiveCell.Offset(1, 0).Select
                        Range(Selection, Selection.End(xlDown)).Copy Destination:=Sheets("Master").Cells(6550, i).End(xlUp).Offset(1, 0)
                    Else
                        Sheets("Master").Cells(6550, i).End(xlUp).Offset(1, -1).Select
                        Selection.End(xlDown).Offset(0, 1).Select
                        ActiveCell.Value = "[not applicable]"
                        ActiveCell.Offset(-1, 0).Select
                        Range(ActiveCell, Selection.End(xlUp)).Offset(1, 0).Select
                        For Each rrange In Selection
                            rrange.Value = "[not applicable]"
                        Next rrange
                    End If
                Next trange
            Next i
        End If
    Next j
End Sub

1 个答案:

答案 0 :(得分:1)

我打算将此作为评论发布,但由于文字很多,所以不允许我这样做。

Sathish,您对上述问题的理解几乎是正确的,但您错过了几个部分。

If trange.Value = ii(i) Then此部分仅检查数组的前三个值。如果你发现你的循环只运行了3次(For i = 1 To 3

这也不是.Find的使用方式:)我建议您浏览此链接并重新应用逻辑。

TOPIC .Find和.FindNext在Excel VBA中(参见第1节)

LINK http://siddharthrout.wordpress.com/2011/07/14/find-and-findnext-in-excel-vba/

当我编写代码时,我将逻辑写下来然后进行相应的编码。我会无耻地推荐这个链接

TOPIC To'Err'是人类(请参阅第1部分,了解我的意思。请参阅其他部分以改进您的代码)

LINK http://siddharthrout.wordpress.com/2011/08/01/to-err-is-human/

这是一个关于逻辑如何的例子。

<强> LOGIC

  • 循环浏览所有工作表
  • 检查工作表是否不是主要
  • 将搜索范围设置为第1行
  • 使用.Find检查数组中的值是否存在于第1行中。在此处使用单独的循环。
  • 如果找到(然后这样做)
  • 如果没有找到(那就这样做)

如果您仍然卡住,请发布您尝试过的代码,我们会从那里开始。

HTH

西特