Tag: for loop

For循环返回一个错误的元素数组

我有一个像这样的代码的命令button: Dim array1() Dim nrow As Integer nrow = Range("C4:C241").Count ReDim array1(nrow) For i = 0 To nrow 'array1(i) = Range("C" & i + 3) array1(i) = i Next Range("AY4:AY" & nrow + 3) = array1 注释符号'出现在您想要切换以进行一些实验的情况下。 我在Excel中运行这个macros的是一列等于0的值,这不是我期望得到的:我想在Range("AY4:AY241")打印array1 。 我错在哪里?

Excel VBA正在跳过特定的代码行

大家。 我有一个Excel工作簿中的大型VBA模块,它从一堆其他远程工作簿中获取数据并将其复制到当前工作簿中。 然后,格式化和分析数据。 所有这些工作都很好,除了可能需要一段时间,因为我正在处理两个工作表(每天都在增长)中的超过3万行数据。 所以,我试图把它放在“pipe理员”工作表上某个单元格中的百分比。 这似乎也行,但有时候。 在执行期间,Excel似乎随机地跳过了更新进度的.Value代码行。 有时,它会更新大约四分之三的时间,有时甚至更新,直到执行结束。 有谁知道为什么? 以下是相关代码的摘要。 <some code that declares variables and whatnot> ThisWorkbook.Worksheets("Admin").Range("H18").Value = "Waiting…" For Each rw In rng.Rows <code that does the data-gathering and analysis> progress = <code that returns a Double value> ThisWorkbook.Worksheets("Admin").Range("H18").Value = progress & "% complete." Next rw ThisWorkbook.Worksheets("Admin").Range("H18").Value = "Done!" <some cleanup code> 有时,“等待…”从不显示。 […]

r – 来自.xlsx的read.xlsx,具有未知数量的工作表

假设我有一个excel文件,我想用read.xlsx函数读取到R read.xlsx 。 文件由电子表格组成,其中我不知道的数量(有200个这样的文件,所以手动检查张数将是巨大的痛苦)。 每个电子表格都按照适当的数据框架进行组织。 我希望将这些电子表格放在另一个上面。 我写了这样的东西: columnsILike <- c(1,40) for(i in 1:numberOfSheets){ dfInd <- read.xlsx("myfile.xlsx", i, # number of sheet colIndex=columnsILike, endRow=201, startRow=2, header=F) PreviousEmptyDataFrame <- rbind(PreviousEmptyDataFrame, dfInd) } write.csv(PreviousEmptyDataFrame, "data.csv") 问题是,我怎么事先知道张数?

For循环删除行

我正在使用一个macros,列出我select的任何目录中的所有文件名。 我正在编写代码,将文件名拆分成我稍后可以使用的块。 文件名列表从单元格F6开始并在列上运行。 这是我迄今写的代码: Dim ContractNum As String Dim InvNum As String Dim FileRng As Range Dim FileLastRow As Long Dim File As Range FileLastRow = Sheet1.Range("F" & Rows.Count).End(xlUp).Row Set FileRng = Sheet1.Range("F6:F" & FileLastRow).SpecialCells(xlCellTypeConstants, 23) For Each File In FileRng If File = "Invoice.zip" Or File = "Thumbs.db" Then File.EntireRow.Delete End If Next File […]

易VBAmacros列出所有工作表生成错误:types不匹配

我正在做一个ExcelComparer,但我遇到了一个可能明显的错误,我显然错过了一些东西。 我在Excel 2007中运行一个vbamacros 我得到的确切错误是“运行时错误13:types不匹配”当循环尝试获取第二个工作表.name时,会发生这种情况。 所以,第一个sheetname返回正常 下面你可以findmacros 在此先感谢,L Sub compare() Dim strWorkbook1, strWorkbook2 As String Dim Workbook1, Workbook2 As Workbook strWorkbook1 = Worksheets("Sheet1").Range("C5") & Worksheets("Sheet1").Range("D5") strWorkbook2 = Worksheets("Sheet1").Range("C6") & Worksheets("Sheet1").Range("D6") Set xlapp = CreateObject("Excel.application") Set Workbook1 = xlapp.Workbooks.Open(strWorkbook1) xlapp.Visible = False Dim ws As Worksheet For Each ws In Workbook1.Sheets 'ws.Select If Not ws.Visible = xlSheetVeryHidden […]

一个VBA For循环中有多个范围?

我是VBA的初学者,只想突出显示N和AA列中的空单元格。 在一个For循环中可以有多个范围而不是下面的代码? Private Sub CommandButton22_Click() 'HIGHLIGHT Dim cell As Range For Each cell In Range("N") If cell.Value = vbNullString Then cell.Interior.ColorIndex = 6 End If Next cell For Each cell In Range("AA") If cell.Value = vbNullString Then cell.Interior.ColorIndex = 6 End If Next cell End Sub

替代使用循环使代码运行更快

我有两个问题,第一个是关于一个excel公式,我不能在VBA复制,即使我已经使用loggingmacros来检索公式,第二个来,因为我不能解决我的第一个问题,是关于代码效率:基本上在细胞AR2我把一个Excel的公式: IF=(P2="LDN";"UK;IF(P2="MAD";"SPAIN" IF(P2="PRA";"CZECH REPUBLIC";""))))))))) 即时通讯为一些国家做这个。 然后即时通讯在我的第二行做自动填充单元格目的地,直到我的工作表上的数据最后一行才能得到结果。 主要的问题是,在Excel中,它运作良好,但是当用VBA录像机在VBA编码时,我在下面的代码中有一个错误。 虽然我只是复制粘贴VBA录音机的结果。 请find下面的代码。 i = Range("A:A").Find("*", [A1], xlValues, xlWhole, xlByRows, xlPrevious).Row Range("AR2").Select ActiveCell.FormulaR1C1 = _ "=IF(RC[-28]=""LDN"",""UK"",IF(RC[-28]=""MAD"",""SPAIN"",IF(RC[-28]=""STO"",""SWEDEN"",IF(RC[-28]=""DUB"",""IRELAND"",IF(RC[-28]=""SAO"",""BRASIL"",IF(RC[-28]=""PAR"",""FRANCE"",IF(RC[-28]=""TOR"",""CANADA"",IF(RC[-28]=""TOK"",""JAPAN"",IF(RC[-28]=""ZUR"",""SWITZERLAND"",IF(RC[-28]=""HKG"",""HONG KONG"",IF(RC[-28]=""HEL"",""FINLAND"",IF(RC[-28]=""MIL"",""ITALY"",IF(R"& _ ""FRA"",""GERMANY"",IF(RC[-28]=""COP"",""DANEMARK"",IF(RC[-28]=""BRU"",""BELGIUM"",IF(RC[-28]=""AMS"",""NETHERLANDS"",IF(RC[-28]=""SIN"",""SINGAPORE"",IF(RC[-28]=""SEO"",""SOUTH KOREA"",IF(RC[-28]=""OSL"",""NORWAY"",IF(RC[-28]=""LIS"",""PORTUGAL"",IF(RC[-28]=""NYK"",""USA"",IF(RC[-28]=""VIE"",""AUSTRIA"",IF(RC[-28]=""LUX"",""LUXEMBOURG"",IF(RC[-28]=""JOH"",""SOUTH AF"& _ "(RC[-28]=""MEX"",""MEXICO"",IF(RC[-28]=""SYD"",""AUSTRALIA"",IF(RC[-28]=""TAI"",""TAIWAN"",IF(RC[-28]=""VAR"",""POLAND"",IF(RC[-28]=""BUD"",""HUNGARY"",IF(RC[-28]=""IST"",""TURKEY"",IF(RC[-28]=""BAN"",""INDIA"",IF(RC[-28]=""MOS"",""RUSSIA"",IF(RC[-28]=""TEL"",""ISRAEL"",IF(RC[-28]=""KUA"",""MALAYSIA"",IF(RC[-28]=""ATH"",""GREECE"",IF(RC[-28] =""PRA"",""CZECH REPUBLIC"& _ "))))))))))))))))))))))))))))))))))" Range("AR2").Select Selection.AutoFill Destination:=Range("AR2:AR" & i) 由于上面的代码没有工作,我试图在vba中使用循环但是我发现,它需要年龄得到的结果,因为我有近20k行…. 5分钟来处理insteand即时结果与Excel公式:代码我的循环在这里: For j = 2 To i If Range("P" & j) = "AMS" Then Range("AR" & […]

下一个没有错误的VBA

我有下面的代码和VBA给我一个“下一个没有为”错误,当我肯定都有。 我知道VBA可以列出与它所说的不完全相同的错误,但是我找不到任何其他的闭环。 如果有人可以检查,这将是很棒! 谢谢: Option Explicit Sub HW09() Dim ng As Integer Dim v As String Dim lg As String Dim ca As Integer Dim sd As Integer Dim c As Integer Dim r As Integer c = 2 Do ng = InputBox("Please enter the student's numerical grade.") If ng < 0 Then ng = […]

对于Excel VBA中的每个类属性

我有一些看起来像这样的代码: pos.Clutch = sh2.Cells(R, Clutch) pos.Wiper = sh2.Cells(R, Wiper) pos.Alternator = sh2.Cells(R, Alternator) pos.Compressor = sh2.Cells(R, Compressor) … pos.Telephone = sh2.Cells(R, Telephone) poss.Add pos poss是一个集合,Clutch,Wiper等是列索引(从1开始)。 这目前的作品,但非常丑陋。 我正在寻找一种方法来做这样的事情… Do While i <= classProperty.count For each classProperty in pos classProperty = sh2.Cells(R + 1, i) Next classProperty Loop 显然,这不会工作,但没有人有任何build议,如何做一个方法或集合内类将完成大致相同?

每个工作表循环的Excel VBA

我正在处理代码,基本上遍历我的工作簿中的每个工作表,然后更新列宽。 下面是我写的代码; 我没有收到任何错误,但实际上也没有做任何事情。 任何帮助是极大的赞赏! Option Explicit Dim ws As Worksheet, a As Range Sub forEachWs() For Each ws In ActiveWorkbook.Worksheets Call resizingColumns Next End Sub Sub resizingColumns() Range("A:A").ColumnWidth = 20.14 Range("B:B").ColumnWidth = 9.71 Range("C:C").ColumnWidth = 35.86 Range("D:D").ColumnWidth = 30.57 Range("E:E").ColumnWidth = 23.57 Range("F:F").ColumnWidth = 21.43 Range("G:G").ColumnWidth = 18.43 Range("H:H").ColumnWidth = 23.86 Range("i:I").ColumnWidth = 27.43 Range("J:J").ColumnWidth […]