Tag: for loop

即使满足边界,VBA For循环仍然继续

所以我有一个这样的代码运行: maxRow = 5 For numRow=1 to maxRow If Range("A" & numRow).Value = 0 Then Rows(numRow).Select Selection.Delete Shift:=xlUp numRow = numRow – 1 maxRow = maxRow – 1 End If Next numRow 我有 A1至A5 = 4 0 3 1 9(分别) 但由于某种原因,循环继续下去 任何人都请帮助我,所以我最终得到了A1 = 4,A2 = 3,A3 = 1和A4 = 9,没有连续循环。

在Excel中优化这个VBA查找循环

我想优化下面的代码,因为它非常慢。 我正在使用这个答案中find的代码: https : //stackoverflow.com/a/27108055/1042624 但是,在循环+ 10k行时,速度非常慢。 有没有可能优化我的代码在下面? 我试图修改它,但它似乎并没有工作。 Sub DeleteCopy2() Dim LastRow As Long Dim CurRow As Long Dim DestLast As Long Dim strSheetName As String Dim arrVal() As Long Application.ScreenUpdating = False Application.Calculation = xlManual strSheetName = "Week " & ISOWeekNum(Format(Date)) – 1 LastRow = Sheets("MatchData").Range("A" & Rows.Count).End(xlUp).Row DestLast = Sheets(strSheetName).Range("A" & Rows.Count).End(xlUp).Row […]

Excel VBA:在for循环中跳转:“Next without For” – 我在做什么错误?

我真的不知道为什么VBA编译器因为GoTo Jump而唠叨我,。 counter2 = 0 If (counter1 > 1) Then For i = 0 To (MaxLastCell – 4) If (IncompleteRows(i) = 1) Then If ((counter2 > 1) And (counter2 < counter1)) Then x = x + ", " + CLng(i) counter2 = counter2 + 1 GoTo Jump End If If ((counter2 > 1) And (counter2 […]

VBA如果声明和For循环移动到下面的单元格

我有我的xlSheet 3列 Year GapYear Col3 Year 13 Yes 2018 Year 12 No Year 13 Yes Year 12 No 我希望vba根据我的if语句逻辑计算col3的开始年份: Sub startYear() Dim Year As Range Set Year = Range("A2") Dim GapYear As Range Set GapYear = Range("B2") Dim Col3 As Range Set Col3 = Range("C2") lastRow = ActiveWorkbook.ActiveSheet.UsedRange.Rows.Count For Row = 1 To lastRow If […]

在Excel VBA中search多个不同的string

我试图让用户search最多6个不同types的string(文本)。 不过,我已经试了多达2, 问题 但我的代码只执行第一个正确的search。 但是,任何一个string之后的search都没有达到目的。 目的 代码的目的是为了在查询行中查找string,然后在coloumn中查找大于零的值,如果这样复制整行。 Private Sub btnUpdateEntry_Click() Dim StringToFind As String Dim SringToFind2 As String Dim i As Range Dim cell As Range StringToFind = Application.InputBox("Enter string to find", "Find string") StringToFind2 = Application.InputBox("Enter string to find", "Find string") With Worksheets("Skills Matrix") Set cell = .Rows(1).Find(What:=StringToFind, LookAt:=xlWhole, _ MatchCase:=False, SearchFormat:=False) If Not […]

根据每行多个单元格的值search表

我试图find一个单位的前一个值(单位的数据是一整行)进入一个表。 随着时间的推移,单位的其中一列中的值会增加,我试图使用一个循环来分析每行中的每一行,并在该特定单位input一个新值时返回该特定单位的前一个值单元。 'My Variables Dim current_size As Integer Dim last_size As String Dim joint_number As Integer Dim tool_sizes As Range: Set tool_sizes = drill_log.Range("Drill_Log[Tool Size]") Dim joints As Range: Set joints = drill_log.Range("Drill_Log[Joint '#]") Dim pass_types As Range: Set pass_types = drill_log.Range("Drill_Log[Pass Type]") Dim row As Range 'Finds the current pass size and last pass […]

VBA:为什么我的范围偏移返回0(或空)?

我一直在盯着这个代码很久,我想我错过了很简单的东西。 此语句的目标是将“lastRowCompass”variables(范围)设置为列中的第一个空单元格: Set lastRowCompass = Cells(Rows.Count, 2).End(xlUp).Offset(1, 0) 一旦设置了variables,我想在循环中使用它,如下所示: For i = lastRowCompass To Range("D" & Rows.Count).End(xlUp).Row If ActiveSheet.Cells(i, 4) <> "" Then Cells(i, 4).Offset(0, -2) = hireDate End If Next 该variables被声明为一个范围,所以这是非常混乱。 当我遍历代码时,即使在执行set语句之后,i = 0。 有没有人有什么build议? 我看过的所有例子都没有帮助我解决问题。 非常感谢! 编辑:我也试过这一行: Set lastRowCompass =Range("B1").End(xlDown).Offset(1, 0) 和这一行: Set lastRowCompass = Range("B" & Rows.Count).End(xlDown).Offset(1, 0) 但是两者都有相同的结果。

使用For循环可以从Excel VBA中的多个文本框中获取值

对于Excel中的VBA代码(不是用户表单),我有4个文本框,名为TextBox1到TextBox4 。 我想使用for循环从这些文本框中获取值。 目标是在相应的列中search一个值(在这种情况下是D )。 因此,我在所选工作表中进行search(以UpdateComboBox的选定值命名)。 为了能够search,我首先select与RelatedWeldTextBox_i中显示的Weld相对应的RelatedWeldTextBox_i 。 这个值跟其他input框不同。 下面的代码是错误的。 它使用for循环创build一个String: TextBox1 。 但是它开始在stringTextBox1列Dsearch,而不是在此文本框中显示的值。 如果我使用Weld = Textbox1.Value该代码的作品,但只适用于Textbox1当然… Sub RelatedWeldNegative () Dim Weld As String Dim Bmin As Integer Dim Bmax As Integer Dim i As Integer For i = 1 To 4` Weld = "Textbox" & i & ".Value" For Each Cell In ActiveWorkbook.Sheets(UpdateComboBox.Value).Range("C2:C320") If […]

EXCEL VBA – 循环列中的单元格,如果不为空,则将单元格值打印到另一列中

我很新的Excel VBA,并没有完全熟悉所有不同的function,我很确定我理解如何在FOR循环中使用IF语句,所以我不太清楚如何去关于创build代码。 这是我想要发生的事情: A1 Food B1 Selected? D1 Selections A2 Grapes B2 Yes D2 Grapes A3 Tomato B3 D3 Mango A4 Mango B4 Yes D4 Spinach A5 Spinach B5 Yes A6 Carrots B6 A7 Onion B7 我的思考过程: 1)在B2到B7的范围内创build一个FOR循环来检查值“是” 2)如果该值为“是”,则A中的相邻单元格中的相应值应该被打印到D中。 3)否则,它应该继续循环通过细胞。 我想VLOOKUP也是在if语句中的某个地方,需要定义variables来确定范围? 将不胜感激任何帮助。 谢谢!

Excelmacros:如果列的每一行中的最后一个字符是“东西”,那么

我试图连接两个单元格,如果某些条件满足其中一个单元格。 具体来说:如果列D =“XX”单元格中的最后字符连接在一起。 我做了类似于下面的事情,每次都得到一个错误。 Sub concatenate() Last = Cells(Rows.Count, 4).End(xlUp).Row For i = Last To 1 Step -1 If Right(Cells(i, 4), 4) = " XX " Then 'do some stuff to concatenate' End If Next i End Sub 任何帮助是极大的赞赏。