Excel VBA循环工作表失败

时间:2013-04-19 10:30:54

标签: excel vba excel-vba

编辑:我接受了所有建议并编辑了我的代码。现在它有效!!! 谢谢。

这是新代码:


Sub WorksheetLoop()

    Dim AllWorksheets As Integer

    Dim Worksheet As Integer

    AllWorksheets = ActiveWorkbook.Worksheets.Count
    For Worksheet = 2 To AllWorksheets

        Sheets(1).Select

        Cells(10, Worksheet).Value = Sheets(Worksheet).TextBoxes(2).Text
        Cells(13, Worksheet).Value = Sheets(Worksheet).TextBoxes(3).Text
        Cells(18, Worksheet).Value = Sheets(Worksheet).TextBoxes(1).Text
        Cells(24, Worksheet).Value = Sheets(Worksheet).TextBoxes(5).Text
        Cells(34, Worksheet).Value = Sheets(Worksheet).TextBoxes(6).Text
        Cells(34, Worksheet).Value = Sheets(Worksheet).TextBoxes(4).Text

    Next Worksheet
End Sub

原始问题

所以有一个excel文档,其中包含大量的工作表。 在第一张表中,应该由脚本创建概述。 它应该从第二个工作表开始,应该写入文本框的内容(请不要问为什么有文本框......)到Cell B10,B13,等等。 然后脚本应该转到工作表3,文本框的内容应该转到C10,C13,...... 你明白了...... 我知道这只能用于Z ....

但为什么我一直收到错误消息?

我的VBA知识非常小,很抱歉明显的错误。

编辑:我接受了有关周围空间的建议。 但我仍然得到“对象不支持此属性或方法”


Sub WorksheetLoop()

    Dim AllWorksheets As Integer

    Dim Worksheet As Integer

    AllWorksheets = ActiveWorkbook.Worksheets.Count

    For Worksheet = 2 To AllWorksheets
        For CellAscii = 66 To (AllWorksheet + 66)
            Cell = Chr(CellAscii)
            Sheets(1).Select
            Range(Cell & "10").Value = Sheets(Worksheet).TextBox2.Text
            Range(Cell & "13").Value = Sheets(Worksheet).TextBox3.Text
            Range(Cell & "18").Value = Sheets(Worksheet).TextBox1.Text
            Range(Cell & "24").Value = Sheets(Worksheet).TextBox5.Text
            Range(Cell & "30").Value = Sheets(Worksheet).TextBox6.Text
            Range(Cell & "34").Value = Sheets(Worksheet).TextBox4.Text
        Next CellAscii
    Next Worksheet
End Sub

3 个答案:

答案 0 :(得分:4)

尝试访问文本框时,请尝试以下操作:

Sheets("SheetName").TextBoxes("TextBox Name").Text 

验证您的“SheetName”和“TextBox名称”是否正确。

希望这对你有用。

答案 1 :(得分:2)

范围不参考模式Ay,它与RyCx一起使用。
无论如何,使用SheetX.Cell来访问特定行和列中的特定单元格。

你循环遍历这样的单元格:

Sub MyLoop()
    For RowCounter = 1 To 20

        For ColumnCounter = 1 To 20
            Set curCell = Worksheets("Sheet1").Cells(RowCounter , ColumnCounter)
            If Abs(curCell.Value) < 0.01 Then curCell.Value = 0
        Next ColumnCounter 
    Next RowCounter 
End Sub

答案 2 :(得分:2)

代码中的主要错误是&

之前和之后没有空格

Range(Cell&"10").Value更改为Range(Cell & "10").Value。同样地,对于其余部分,您的代码将运行得很好:)