Tag: while loop

做while循环不适用于大数据文件

我在excel上有大数据文件,文件有6930行和8列,8列有百分数(0%,4%,16%,18%,19%等)。 我试图做一个macros来绘制所有的行,其中百分比大于18%的行,它不起作用。 该文件从第3行开始,因此第1行和第2行是空的 macros: Sub Test_4 Dim i As Long Dim countErr As Long countErr = 0 i = 2 Do While Cells(i, 1) = "" If Cells(i, 8).Value > 0.18 And IsNumeric(Cells(i, 8)) Then Range(Cells(i, 1), Cells(i, 8)).Interior.ColorIndex = 3 countErr = countErr + 1 End If i = i + 1 Loop If […]

N次迭代后屏幕不会更新

我在我的excel上运行了一个非常简单的“Snake”类游戏,这意味着我需要在我的main-while循环内不断更新屏幕。 “蛇”(基本上是一个彩色细胞)在20×20桌子内随机移动。 它运行好几秒钟,然而,一些点屏幕停止更新; ans excel停止响应,同时仍然运行代码。 这导致崩溃。 我用For循环取代了循环,避免了崩溃,但仍然停止更新,直到循环结束。 循环停止时,屏幕最后一次更新。 我还在每个函数之后join了“睡眠”语句,但这并没有帮助。 这里是主要的代码: Sub main() Dim table(20, 20) As Integer Dim index_move As Integer 'Position class contains only X and Y parameters Dim index_actual_head_pos As Position Set index_actual_head_pos = New Position Dim i As Long index_actual_head_pos.x = 5 index_actual_head_pos.y = 15 Application.ScreenUpdating = True For i = 1 […]

在excel工作表中循环遍历行,如果单元格不为空,则复制范围

除了从其他电子表格所做的工作外,我几乎没有VBA的经验,我相信这一定是可能的。 我已经遍寻search,但无法find任何解释帮助或代码,我可以使用。 我希望有人能帮帮忙。 我从我们的网站购物车下载,它不会将数据格式化,然后上传到一些新的销售订单/发票生成软件。 作为一个例子,这里是一个链接到一个图像,显示了数据当前的样子(工作手册被称为“Orders.csv”,但如果需要,我可以转换为xlsx): http://web225.extendcp.co.uk/fiercepc.co.uk/img1.jpg 正如您所看到的,如果客户购买多个产品(不是产品的数量,是完全不同的产品),则会在行中列出。 第一个产品是从H列开始,第二个从列O开始,第三个从第V列开始,依此类推。 我需要显示的数据如下: http://web225.extendcp.co.uk/fiercepc.co.uk/img2.jpg 所以每个产品都在下面列出,并且在它们之前具有相同的客户细节。 这样,发票软件可以检查每个订单ID,并相应地创build一个显示所有不同产品的发票。 我不知道如何去做这件事。 我想它需要一个循环的macros,检查行是否有一个单元格中的数据,然后相应地复制范围。 此外,macros需要在不同的工作簿(可能称为macros)中,因此它将作用于此下载,因为每次下载时它都将成为一个新的工作簿。 我希望这是有道理的。 我相信对某人来说这很容易,只是不是我。 请帮忙! 理想情况下,我需要macros的解释,所以我可以操纵范围等,因为这只是一个示例电子表格,实际工作表要大得多,包含更多的数据。

循环崩溃的Excel VBA

我一直在让我的代码运行通过条件循环和停止的问题。 这是我有什么: Do While True Dim i As Integer i = 2 If Cells(i, 1).Value <> "" And Not IsError(Cells(i, 2).Value) Then Range(Cells(i, 1), Cells(i, 22)).Copy Range(Cells(i, 1), Cells(i, 22)).PasteSpecial i = i + 1 Else Exit Do End If Loop 我想要做的是让程序检查一个单元格是不是空的,如果另一个单元格没有错误,如果满足条件,那么程序将复制某一行,粘贴它只是它的值,因为行中的一些单元格是一个公式。 出于某种原因,循环不会退出和Excel崩溃,我错过了什么?

Excel VLOOKUP使用string在文件中查找数据。 太慢了

这是我能得到的最好的。 成为任何人的search,并需要这种types的数据拉的最佳答案。 我不得不把它分解成几个部分; 这些工作计算机不能处理这种types的负载。 最大的数据拉动是大约800行,并需要大约一分钟拉动所有的公式和数据。 感谢下面的人们和他们的帮助。 Sub Update() Dim ScreenUpdateState As Boolean Dim StatusBarShow As Boolean Dim CalcState As Long Dim EventState As Boolean Dim ws As Worksheet Dim location_string As String Dim count As Integer 'Save the current state of Excel settings ScreenUpdateState = Application.ScreenUpdating StatusBarShow = Application.DisplayStatusBar CalcState = Application.Calculation EventState = Application.EnableEvents […]

继续TypeMismatch 2042错误的下一次迭代

我在VBA中寻找Continue语句。 我find了一个VB.NET解决scheme,但Excel“IDE”不能识别它。 http://msdn.microsoft.com/en-us/library/801hyx6f.aspx 如果发生错误,我想跳过迭代。 有没有其他的方法 – 一个更优雅的解决scheme – 但GOTO(这是最糟糕的情况下)或包装整个小组在if语句(这也无助于可读性)? 代码片段 'While Loop…. For Each C In w.Range(w.Cells(1, 1), w.Cells(num_rw, num_col)) If IsError(C.Value) Then: MsgBox ("File unsuitable!") 'Continue While End If If Var1 <> "" Then If C.Value = Var1 Then: _ Set Var1_Range = w.Range(w.Cells(C.Row, C.Column), w.Cells(num_rw, C.Column)) End If If Var2 <> "" Then […]

在VBA中添加基本循环时会出现types不匹配

我有一个基本的If ElseIf语句,我试图循环几百行。 If / Else语句本身的工作,直到我尝试和循环(我已经包括下面)。 当我运行它,它给我一个运行时错误“13”型不匹配。 我最初设置MyCell作为一个String直到我有这个错误出现。 然后我认为设置MyCell作为Variant我可以避免这种情况,但它仍然返回RTE 13。 Sub code_reassign() Dim Count As Integer Dim MyCell As Variant Count = 1 Do While Count < 10 MyCell = ActiveCell.Value If MyCell = "Busycotypus canaliculatus" Then ActiveCell.Offset(0, -1).Value = "N106" ElseIf MyCell = "Busycon carica" Then ActiveCell.Offset(0, -1).Value = "N104" ElseIf MyCell = "Busycon perversum" […]

循环浏览文件夹中的文件并添加date标签

我正在尝试去一组文件夹中的工作簿,并添加一个选项卡到每个命名的当前date。 我的代码下面打开第一个文件并正确添加Tab,但不循环打开剩余的文件。 Sub LoopThroughFolder() Dim MyFile As String, Str As String, MyDir As String, Wb As Workbook Set Wb = ThisWorkbook MyDir = "C:\Users\u558683\Desktop\QA VBA Project\LoopTabs\" MyFile = Dir(MyDir & "*.xlsx") ChDir MyDir Do While MyFile <> "" Workbooks.Open (MyFile) TabName = Format(Date, "mmm-yyyy") 'Change the format as per your requirement On Error GoTo AddNew […]

Excel VBAmacros – 在循环中连接

尝试制作一个macros,它将在电子表格中每1000行插入一行,并将列的前1000行连接到不同列中第1000行的单个单元格中。 我正在使用此代码来每1000行插入一行: Sub Insert1000() Dim rng As Range Set rng = Range("A2") While rng.Value <> "" rng.Offset(1000).EntireRow.Insert 'code insert csv of 1000 previous rows into a single cell Set rng = rng.Offset(1001) Wend End Sub 如果我的描述不清楚,请道歉。 这里是我想要的结果的剪辑。 任何帮助,将不胜感激。