Tag: foreach

对于范围中的每个单元格,将单元格值添加到array-IF条件得到满足

这听起来像是一个基本的问题,但我一直没有find任何可以帮助我的提示。 我发现像Arr = Range("A1:B10")这样的东西会让事情变得简单,但是上面的例子的问题是,它可能会在指定范围内的所有值中移动,这不是我想要的去做。 虽然事后删除不需要的值听起来像是一个选项,但它听起来像是一个巨大的,毫无意义的绕道,可以很容易地避免。 目前我有以下几点: For Each cell In Worksheets("Search").Range("C7:C15").Cells If cell.Value = "Yes" Then fcat() = cell.Offset(0, -1).Value Next cell 我早些时候猜测和尝试fcat(cell) ,但到目前为止,我只是在fcat() = cell.Offset(0, -1).Valuetypes不匹配错误,我不完全确定什么所有其他的尝试。 谢谢你的时间,并让我知道如果还有什么我可以做,以改善我的问题。

对于每个在excel vba中都不起作用

下午好, 我正在处理这些数据透视表生成的数据,我想用上面的值填充第一列(从N1开始)中的一些空单元格: (我想在那里张贴一张图片,但显然我需要10个声望才能做到这一点,这是多么愚蠢?) 所以我写了这个: Sub orange_square() Dim cellule5 As Range For Each cellule5 In Range("N1").CurrentRegion.Columns(1) cellule5.Value = cellule5.Offset(-1,0).Value Next End Sub 但它什么都不做,所以我写了这个: Dim cellule5 As Range For Each cellule5 In Range("N1").CurrentRegion.Columns(1) MsgBox (IsEmpty(cellules)) Next 这只给了我一个带有False的MsgBox。 所以我认为它必须由于某种原因跑了只有第一个单元格,因此我写了以下作为testing: Dim cellule5 As Range For Each cellule5 In Range("N1").CurrentRegion.Columns(1) cellule5.Value = 5 Next 并用5代替了所有的东西。如果有人明白这一点,他们的帮助将会相当值得赞赏。 提前致谢! 编辑:起初我以为是因为这些数据是在一个表中,但我没有列出它,问题依然存在

ForEach循环对象所需的错误

简介:我有一个策略编号的列表,我正在使用for each循环在列A中循环 问题:除了列A中有一个空单元格,我的代码删除整个行(应该是这样),除了当我尝试设置policyvariables时,我得到一个object required错误。 我在代码中标记了发生错误的位置。 问题:如何删除没有theCell丢失对象的空行? 代码: Dim theRange As Range Dim theSheet As Worksheet Dim theDate As String, policy As String, amount As String, details As String, entryDate As String Set theSheet = Sheets("OneDate") Set theRange = Range("A2:A" & theSheet.UsedRange.Rows.Count) For Each theCell In theRange 'FOR EACH POLICY IN COLUMN "A" If theCell.Value = […]

VBA用于过滤列

我有一个很大的类似数据库表,第一行包含标题。 我想根据列值的这个表的行的子集。 两个问题: 1)VBA明智我想通过列循环,当所有必要的列的值都匹配时,将整个行复制到一个新的工作表。 2)行的子集是基于一个列表。 我刚刚阅读我可以使用一个数组的Autofilter。 是否有可能从列中input这个数组,而不是手动input到VBA代码中? 我使用的列表包含200个不同的string,并会定期更新。 CritList是string列表。 我仍然需要弄清楚,但是现在我离开了办公室,明天再走。 编辑1感谢@DougGlancy; 自动过滤现在工作。 这是他美丽的代码(我只加了arraysfilter)。 EDIT2包含一个更复杂的数组filter,其中NameList是我想过滤的列表。 现在一切正常! Sub FilterAndCopy() Dim LastRow As Long Dim vName As Variant Dim rngName As Range Set rngName = Sheets("Sheet3").Range("NameList") vName = rngName.Value Sheets("Sheet2").UsedRange.Offset(0).ClearContents With Worksheets("Sheet1") .Range("A:E").AutoFilter 'Array filter from NameList .Range("A:J").AutoFilter Field:=3, Criteria1:=Application.Transpose(vName), _ Operator:=xlFilterValues .Range("A:E").AutoFilter field:=2, Criteria1:="=String1" _ , Operator:=xlOr, […]

对于每个下一个循环意外跳过一些条目

我在Excel中编写了一个macros来扫描logging列表,在内容中find任何带有“CHOFF”的单元格,复制包含它的行,并将这些单元格粘贴到另一个表单中。 它是格式化报告的较长代码的一部分。 它工作得很好,除了“For Each”循环已经跳过一些看似随机的条目。 这不是每隔一行,我试图以不同的方式进行sorting,但不pipe怎样,相同的单元格都被忽略,所以它看起来并不是关于单元格的顺序。 我尝试使用InStr而不是cell.value,但仍然跳过了相同的单元格。 你有什么想法是什么可能导致代码只是不认识一些散布在范围内的细胞? 有问题的代码如下: Dim Rng As Range Dim Cell As Range Dim x As Integer Dim y As Integer ActiveWorkbook.Sheets(1).Select Set Rng = Range(Range("C1"), Range("C" & Rows.Count).End(xlUp)) x = 2 For Each Cell In Rng If Cell.Value = "CHOFF" Then Cell.EntireRow.Select Selection.Cut ActiveWorkbook.Sheets(2).Select Rows(x).Select ActiveWorkbook.ActiveSheet.Paste ActiveWorkbook.Sheets(1).Select Selection.Delete Shift:=xlUp y = […]

如何在VBA中实现自定义迭代类

我想添加一个function到我的类,所以我可以用它们为每个循环。 我写了hashmaps,arraylists,队列,集合等,我想迭代。 现在我正在寻找一种方法来实现IUnknown类来构build自定义迭代器。 我已经知道如何使用 private objPeople as Collection Public Property Get NewEnum() As IUnknown Attribute NewEnum.VB_UserMemId = -4 Attribute NewEnum.VB_MemberFlags = "40" Set NewEnum = objPeople.[_NewEnum] End Property 但是那里的所有例子都是基于Collection类的,我不想使用它们。 我想要关注的是试图实现IUnknown接口,但我还没有find任何有关如何做到这一点的参考。 我在Java,C ++,C#等方面拥有丰富的经验,所以我认为即使在VBA中也有这样的实现方式,甚至可以用API调用这样的东西。

迭代集合(VBA)

你好,我是VBA新手,我正在尝试迭代我已经做的一个集合,并为每个值执行一个操作。 这是我的代码: Sub makeRowsMatch() Dim rows As VBA.Collection Set rows = New VBA.Collection Dim i As Integer Dim j As Integer Dim y As Integer For i = 2 To 22203 For j = 2 To 121 If Cells(i, 2).Value <> Cells(j, 38) Then rows.Add (i) End If Next j Next i For Each y […]

对于每个循环的反向顺序

关于VB最强大的function之一是能够循环通过集合中的对象而不涉及索引 – for each循环。 我发现它非常有用,只想从集合中删除对象。 在从电子表格中的预定义行(如行)中删除对象时,如果使用索引并从最大值开始并返回第一个值,则代码会更简单。 (使用迭代器的步骤-1)(否则需要一个偏移量,一旦活动的一个被删除,For就会将枚举器指针移回到前一个对象) 例如。 For intA = 10 to 1 step -1 ' … Next 如何使用For Each | 接下来例如。 For each rngCell in Selection.Cells ' … Next 我怎么能循环使用for each循环语法?