长话短说是:我想每次点击一个单元格运行一个子 我在这里坚持这个在Excel中的子,我需要你的帮助。 我在ThisWorkbook区域内编写了一个VBA代码,因为我希望这个子代码能够运行在它的每一张表格中。 我的目标是:当我点击一个单元格(无关紧要)时,子运行,进行一些检查,然后在特定的单元格(在同一个活动工作表)中写入结果。 可以处理这个事件吗? 谢谢。
我有我的Excel表格中包含一个date的单元格。 这些单元格的显示格式是自定义格式“mmmmm-yy”,因此date“7/1/16”显示为“S-16”。 这种工作格式工作在Excel工作表,但是,在VBA中,我尝试调用这些单元格上的Format()函数,它不会产生相同的格式。 Format( <Date_Cell> , "mmmmm-yy") 给 "April4-16" 在图表上,例如。 为什么Format函数的行为与格式化date单元格不一样? 编辑:根据办公室支持网站, 按照你想要的方式格式化一个date ,我使用正确的格式,但它没有产生网站声称它应该的结果。 编辑2:打开单元格date格式的工作不同于VBA格式函数,因为选定的答案指出。
我有大量的不同值的行,从1000到100万。 这是以字节为单位的数据,我需要分别将其转换为Kb或Mb。 我可以将所有的值除以1M,并获得所有的数据EN MB,但我想有在kb和Mb的数据。 我尝试使用MODfunction,但不会做伎俩,因为所有的数字将被1K和1M整除,所以我有点卡住了! 这里是我得到的数据的一个样本: 16000000 220000 2048000 2048000 230000 16000000 230000 16000000 220000 230000 所以我需要的是,如果该单元格包含6个零,然后除以1M或如果该单元格包含3个由1000分开的零。 为了获得不同的数据,我将在每个结果上添加连接。
有什么限制,我可以通过VBA在一个范围内select? 基本上我发现,如果我要在循环中隐藏整行,需要很长时间才能隐藏行。 例如) – 隐藏A列中没有值的行 For i = 1 to 600 With Range("A" & i) If .value = vbEmpty then .EntireRow.Hidden = True End With Next 这样做的更快捷的方法是创build一个引用每个行的单个范围,然后执行一个“.entirerow.hidden = true”语句。 是的,我已经有了application.screenupdating = false设置。 我遇到的问题是,如果范围的string引用太长,它只是失败。 下面的代码声明了一个函数,该函数既接受行号的标准数组(如果数组是事先制定的),也接受参数参数(如果您不想先声明数组,行很小)。 然后创build一个在范围参考中使用的string。 Function GetRows(argsArray() As Long, ParamArray args() As Variant) As Range Dim rngs As String Dim r For Each r In […]
我有一些传统的Excel文件,大量调用存储过程和数据库连接,所有这些都是用旧的方式完成的。 因为在VBA中没有像.NET一样的try-catch-finally的概念,是否有任何最佳实践来申请有一个更坚实的数据访问层? 我想就如何打开连接,执行需要一些参数的存储过程,然后在任何成功或错误的情况下,closures连接和释放资源,有一个很好的例子。
我已经浏览了许多Excel VBA主题,但是,我还没有find任何关于插入普通值的信息 – 在这种情况下SUM()的结果 – 不是公式。 有一种方法, PasteSpecial xlPasteValues ,但它似乎不是我正在寻找。 下面的代码示例插入公式,不仅是值: Sub test() Range("A4").Value = "=SUM(A1:A3)" End Sub 如何在Excel VBA中插入不含公式的普通值?
我有一个计算几个TIMES的差异的公式,并乘以24获得总和的十进制值: D10=(C9-D9)*24 我想这样做特别的四舍五入: 如果D9 is 1pm , C9 is 2:08 pm ,我想D10是1.25 换句话说 1:53 until 2:07 would be counted as 2 2:08 until 2:22 would be 2:15 2:23 through 2:37 would be 2:30 etc 有谁知道如何做这种特殊的四舍五入? 正如道格所言: i need the accrued time from 1 PM to 2:08 PM should round up to 1.25 hours whereas 1 […]
总结:我从一张纸上取出一行数据并粘贴到另一张纸上,然而这张纸是一种日常使用的东西,只是在旧数据下方input新数据。 问题:在每次新运行中,始终将7添加到UsedRange.Count 。 例如:一次运行UsedRange.Count将是7; 下次我运行这个函数的时候,count就是14。 我在寻找什么:为什么是这种情况,有没有办法来帮助UsedRange更准确 为了参考,我包含了整个函数。 Function eftGrabber() Dim usedRows As Integer Dim i As Integer ChDir "\\…" Workbooks.Open Filename:= _ "\\…\eftGrabber.xlsm" usedRows = Sheets("EFT").UsedRange.Count Windows("Data").Activate Sheets("DataSheet").Range("A11").EntireRow.Copy Windows("eftGrabber").Activate Sheets("EFT").Range("A" & usedRows + 1).Select ActiveSheet.Paste i = usedRows Do 'THIS LOOP DELETES BLANKS AFTER POSTING NEW LINES Range("A" & i).Select If Range("A" & i) = […]
我有一个电子表格,在VBA中打开其他电子表格,并暂时将其设置为活动worksheet 。 但是,我有一个循环,在第一次迭代结束时,我需要将活动工作表设置为启动VBA模块的原始工作表。 我不能设置一个新的Workbook对象来打开原件,因为原件仍然在后台打开,它说已经打开。 我的问题是,我需要将活动Workbook更改为原始Workbook ,当我从来没有一个工作簿对象引用它? 'Original workbook is active implicitly 'loop begins 'change active workbook to something else 'Need to change back to original workbook here- but don't have a VBA workbook object 'end of loop
我试图使用VBA在Excel中的一个单元块内自动创build值。 debugging下面的代码时,我不断收到types不匹配的错误。 我哪里做错了? Sub autosumtest() Dim total As Integer Worksheets("Sheet1Test").Select Range("F16:G20").Select total = CInt("=SUM(Selection.Values)") MsgBox (total) End Sub EDIT 1:这是我的testing数据称为Autosum范围的简单示例: