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
Vba 在ParentRange.Cells中 子范围。选择 下一步 对于ParentRange.Rows中的每个子范围 子范围。选择 下一步 对于ParentRange.Columns中的每个子范围 子范围。选择 下一步 对于ParentRange中的每个子范围_Vba_Excel_Ole Automation - Fatal编程技术网

Vba 在ParentRange.Cells中 子范围。选择 下一步 对于ParentRange.Rows中的每个子范围 子范围。选择 下一步 对于ParentRange.Columns中的每个子范围 子范围。选择 下一步 对于ParentRange中的每个子范围

Vba 在ParentRange.Cells中 子范围。选择 下一步 对于ParentRange.Rows中的每个子范围 子范围。选择 下一步 对于ParentRange.Columns中的每个子范围 子范围。选择 下一步 对于ParentRange中的每个子范围,vba,excel,ole-automation,Vba,Excel,Ole Automation,在ParentRange.Cells中 子范围。选择 下一步 对于ParentRange.Rows中的每个子范围 子范围。选择 下一步 对于ParentRange.Columns中的每个子范围 子范围。选择 下一步 对于ParentRange中的每个子范围 子范围。选择 下一步 端接头 享受。然后用几个合并的单元格试试,看看合并的范围有多奇怪。我知道它返回了一个范围(在我的原始帖子中提到过),还有其他方法可以获得一个行范围(也提到过)。我要问的是,我们从.Rows()中得到了什么,而我们还没有从

在ParentRange.Cells中 子范围。选择 下一步
对于ParentRange.Rows中的每个子范围 子范围。选择 下一步
对于ParentRange.Columns中的每个子范围 子范围。选择 下一步
对于ParentRange中的每个子范围 子范围。选择 下一步
端接头
享受。然后用几个合并的单元格试试,看看合并的范围有多奇怪。

我知道它返回了一个范围(在我的原始帖子中提到过),还有其他方法可以获得一个行范围(也提到过)。我要问的是,我们从.Rows()中得到了什么,而我们还没有从.Cells()和.Range()中得到什么?我将在我的问题中澄清这一点……恐怕就这样了。“行”和“列”属性只是一个快速快捷方式,可以方便地访问设置为包含初始范围的单行(或单列)的范围对象。没有什么比这更神奇的了。我觉得自己像个白痴,因为我没有想到Set interestingRows=Sheet1.Range(startRow&“:”&endRow)。(即使我想到了,有些人也会同意我的观点。)事实证明,interestingRows=Sheet1.Range(startRow&“:”&endRow)根本不起作用。它并没有崩溃,但无论我的射程是多少都不是我想要的。testStr=65&“:”&5的计算结果为“65:5”,但我不确定结果是什么范围。令人恼火的是,微软认为不适合为这种事情提供有用的功能。AFAIK(尽管在VBA中没有那么远)没有一个类似于范围的构造函数可以获取行和列索引,或者单元对。这种需要经常出现。S我使用了我的旧的、乏味的方法来获取函数中较大范围的子范围的引用。我的解决方案是构造一个“A4:G7”样式的字符串,并将其提供给范围构造函数,如下所示:rangeStr=Chr(AM1+iCol1)&CStr(iRow1)&“&Chr(AM1+iCol2)&CStr(iRow2);\u设置getSubRange=sourceRange.Range(rangeStr)\ u0。但肯定有一种更直接的方法直接使用指数,对吗?RBY-我想差不多就是这样。这是一种操作整行工作表/一个范围的一部分(非常有用!)的方便方法,需要启动一个计数。当您在许多行(或列)中运行时,这对循环最有用。这是一个很好的问题。。。除了。伯爵,我一直想知道他们是干什么的。我想知道为什么这个问题似乎引发了每个人的冲动,想发布“答案”,而这些答案仅仅是猜测,或者根本没有解决这个问题-1祝大家!!(最后一部分主要是个笑话)是的,很奇怪。更奇怪的是,尽管我的分数超过6000分,几乎都是从回答SQL Server问题中获得的,但我唯一的金质徽章是从这个问题的近25000个观点中获得的,而这对我来说只是一种无聊的好奇。然而,人们对它的兴趣是我在这里所做的任何事情的10倍。不完全是一个自我建设者。+1个有趣的问题。是的,我知道。这不是我问的问题。虽然这不是我问的问题,但来这里的人可能会问这个问题(就像我一样),所以我想我会提供它。也许可以在工作中使用
。。。以感觉结束,只不过是感觉而已-1@Jean-François Corbett——有时候这些是你能得到的唯一答案,最好是有在这个领域工作过的人的轶事,而不是什么都没有。这几天我可能不会发布这样的东西(答案是2岁!!)-太粗糙了,我绝对不会费心去发布那些几乎没有投票希望的东西。一般来说,VBA问题不太受欢迎。但我强烈反对你的暗示,即“基于感觉的答案是错误的”,因为这结束了关于没有明显或简单答案的问题的辩论。我明白你的意思。老实说,我没有看过日期,也没有意识到它太旧了。尽管如此,我还是觉得(原文如此)这些猜测答案太多了,只有极少数是有用的,而大多数是“无用”的,即合法的否决票候选人,我支持我先前对这一点的判断。其他人显然有不同的看法,因为你的答案/感觉仍然得到了一个净的赞成票。@rbaryyoung
行(Cstr(iVar1)和“&Cstr(iVar2))
大多数肯定与
单元格(Cstr(iVar1)和“&Cstr(iVar2))不同。后者会导致类型不匹配错误。这是所有答案中缺失的一部分,这些答案表示“
计数
外都相同”。迭代某个范围的行和列的能力非常强大,而不考虑
范围
是如何创建的。它提供了一种非常干净的方法来迭代单元,避免了循环中的
单元(i,j)
类型逻辑。它也适用于某些情况下可能出现的不连续范围。
基本上相同的范围…
忽略了这些属性中有价值的一部分,即它们为通过
范围的每一个
循环提供了一个新的迭代器。请参阅以供参考。当与
特殊单元格
或其他不连续范围(例如从
自动筛选
)结合使用时,这一功能非常强大。具体示例:当您没有
时,在
自动筛选后快速将带状行着色应用于可见数据。@ByronWall感谢您的评论,因为我在本页查找有关为此目的使用range.rows属性的具体信息。我非常感谢您在这个用例上的指点。相关:
   SET rng = wks.Rows(iStartRow, iEndRow)
Dim myRange as Range
Set myRange = Sheet1.Range(Cells(2,2),Cells(8,8))
myRange.Rows(3).Select
Dim interestingRows as Range
Set interestingRows = Sheet1.Range(startRow & ":" & endRow)
Dim someRange As Range
Dim interestingRows As Range

Set myRange = Sheet1.Range(Cells(2, 2), Cells(8, 8))

startRow = 3
endRow = 6

Set interestingRows = Range(myRange.Rows(startRow), myRange.Rows(endRow))
Set rng = wks.Range(wks.Rows(iStartRow), wks.Rows(iEndRow)).Rows
Dim sr As String    
sr = "6:10"
Rows(sr).Select
rngLastRecord.Rows.Copy Destination:=Sheets("Availability").Range("a" & insertRow)
Rows(CStr(iVar1) & ":" & CStr(iVar2)).Select
Function Attendance(rng As Range) As Long
Attendance = 0
For Each rRow In rng.Rows
    If WorksheetFunction.Sum(rRow) > 0 Then
        Attendance = Attendance + 1
    End If
Next
End Function
?TypeName(Selection.rows) Range Public Sub Test()
Dim SubRange As Range Dim ParentRange As Range
Set ParentRange = ActiveSheet.Range("B2:E5")

For Each SubRange In ParentRange.Cells SubRange.Select Next
For Each SubRange In ParentRange.Rows SubRange.Select Next
For Each SubRange In ParentRange.Columns SubRange.Select Next
For Each SubRange In ParentRange SubRange.Select Next
End Sub