Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 循环浏览工作表并将值复制到范围_Excel_Vba - Fatal编程技术网

Excel 循环浏览工作表并将值复制到范围

Excel 循环浏览工作表并将值复制到范围,excel,vba,Excel,Vba,我尝试循环浏览所有工作表(前两个除外),从每个工作表复制一个值,然后将复制的值放入一列中。这就是我目前所拥有的。它没有给我一个错误信息,但它也不工作 Sub copyGrades() Dim ws As Excel.Worksheet Dim grade As Double Dim rng As Range Dim rcell As Range Set rng = ThisWorkbook.Worksheets("Student List").Range

我尝试循环浏览所有工作表(前两个除外),从每个工作表复制一个值,然后将复制的值放入一列中。这就是我目前所拥有的。它没有给我一个错误信息,但它也不工作

Sub copyGrades()
    Dim ws As Excel.Worksheet
    Dim grade As Double

    Dim rng As Range
    Dim rcell As Range
    Set rng = ThisWorkbook.Worksheets("Student List").Range("H2:H174")

    For Each ws In ActiveWorkbook.Worksheets
        If ws.Name <> "Rubric" And ws.Name <> "Student List" Then
            grade = ws.Range("E11").Value

            For Each rcell In rng.Cells
                rcell.Value = grade
            Next rcell

        End If
    Next ws
End Sub
Sub-copyGrades()
将ws设置为Excel.Worksheet
暗等级为双倍
变暗rng As范围
变暗rcell As范围
设置rng=ThisWorkbook.工作表(“学生名单”).范围(“H2:H174”)
对于ActiveWorkbook.Worksheets中的每个ws
如果ws.Name“Rubric”和ws.Name“Student List”,那么
等级=ws.范围(“E11”)值
对于rng.单元格中的每个rcell
rcell.Value=等级
下一个rcell
如果结束
下一个ws
端接头

我想这就是我要做的(当然不是唯一的方法):

选项显式
次职系()
将ws设置为Excel.Worksheet
暗等级为双倍
变暗rng As范围
将计数设置为整数
计数=1
设置rng=ThisWorkbook.工作表(“学生名单”).范围(“H2:H174”)
对于ActiveWorkbook.Worksheets中的每个ws
如果ws.Name“Rubric”和ws.Name“Student List”,那么
等级=ws.范围(“E11”)值
rng.单元(计数,1)=等级
计数=计数+1
如果结束
下一个
端接头

我无法使嵌套循环正常工作,但我可以使用另一种方法解决它(查找工作表名称与给定列中的值之间的匹配)


当代码在技术上起作用时,你能准确地定义什么“不起作用”吗。你试图设计它做什么?现在,从每个工作表中取一个值,然后用该特定值填充整个范围。直到最后一张工作表。我可以想象这不是你想要的,但是你能解释一下你想要的是什么吗?我想你已经把你的手指放在这个问题上了。我试图将第一个复制的值放入列中的第一个单元格,将第二个复制的值放入第二个单元格,等等。但显然这不是我要做的。您不需要通过
rng
循环来使用这些值
rng.Value=grade
应该可以。你有172张工作表可以从中复制吗?@Andras Dorko是的,我有足够的工作表可以从中复制你似乎认为嵌套循环是绝对必要的。。。
Option Explicit

Sub copyGrades()
    Dim ws As Excel.Worksheet
    Dim grade As Double
    Dim rng As Range
    Dim count As Integer

    count = 1
    Set rng = ThisWorkbook.Worksheets("Student List").Range("H2:H174")

    For Each ws In ActiveWorkbook.Worksheets
        If ws.Name <> "Rubric" And ws.Name <> "Student List" Then
            grade = ws.Range("E11").Value
            rng.Cells(count, 1) = grade
            count = count + 1
        End If
    Next
End Sub
Sub copyGrades()

    Dim ws As Excel.Worksheet
    Dim rng As Range
    Dim rcell As Range
    Set rng = ThisWorkbook.Worksheets("Student List").Range("F2:F174")

            For Each rcell In rng.Cells

                For Each ws In ActiveWorkbook.Worksheets
                    If ws.Name = rcell.Value Then
                        rcell.Offset(0, 3).Value = ws.Range("E11").Value
                    End If
                Next ws

            Next rcell
End Sub