如何在Excel中使用正则表达式并利用Excel强大的网格设置进行数据操作?
我的理解正则表达式是不理想的许多情况下(使用或不使用正则表达式?),因为Excel可以使用Left,Mid,Right,Instr类型相似的操作命令.
我想在Excel 2010中使用vba循环遍历目录的文件.
在循环中,我将需要
我编写了以下代码,如果该文件夹没有超过50个文件,则工作正常,否则它是非常慢的(我需要它与> 10000文件的文件夹一起使用).这段代码唯一的问题是查找操作file.name需要花费很多时间.
代码有效,但waaaaaay太慢(每100个文件15秒):
Sub LoopThroughFiles()
Dim MyObj As Object, MySource As Object, file As Variant
Set MySource = MyObj.GetFolder("c:\testfolder\")
For Each file In MySource.Files
If InStr(file.name, "test") > 0 Then
MsgBox "found"
Exit Sub
End If
Next file
End Sub
Run Code Online (Sandbox Code Playgroud)
问题解决了:
Dir以特定方式(15000个文件为20秒)和使用该命令检查时间戳来解决FileDateTime. 当我想找到最后使用的单元格值时,我使用:
Dim LastRow As Long
LastRow = Range("E4:E48").End(xlDown).Row
Debug.Print LastRow
Run Code Online (Sandbox Code Playgroud)
当我将单个元素放入单元格时,输出错误.但是当我在单元格中放入多个值时,输出是正确的.这背后的原因是什么?
我不是要求任何脚本的帮助,但我的问题是要澄清.最近我在Excel中做了很多VB脚本,所以我在这个问题上真的指的是Excel..text,.value和.value2有什么区别?我应该何时使用target.text,target.value和target.value2?我从未使用过value2选项,但仍想知道它的用途.
有时如果我使用.text它会给我一个错误,当我只检查或操作单元格中的文本时,我需要使用.value.然后有时我认为我应该使用.value我得到一个错误,我需要使用.text.通常它接受或不接受问题,但有时它会产生影响.我知道必须有一些逻辑,但我似乎无法弄明白.
我还发现,如果你只是将它保留为目标而不指定.text或.value它最初会起作用,但是有人做的事情最终会导致脚本出错,所以总是最好在它上面使用.something .我想我要问的是,是否有人可以给我一些指导方针,经验法则,如何正确使用每一个以及何时需要使用它.
谢谢你们的解释.我更了解它.它们都是很好的解释.下面是我的一些代码的一个小例子.我认为它应该是target.text,但它会出错,所以当我使用target.value时它会起作用.
If LCase(Target.Value) = LCase("HLO") And Target.Column = 15 Then
Target.Value = "Higher Level Outage"
End If
Run Code Online (Sandbox Code Playgroud)
我仍然有点困惑,因为当我想到价值或价值2时,特别是在你提供的答案之后,我认为它们只应该用于数字.但是,在我的例子中,我正在谈论严格的文本,这是我的脚本所指的很多(单元格中的文本,比数字更多).
有没有人有一个Excel VBA函数可以从一个数字返回列字母?
例如,输入100应该返回CV.
有什么我需要参考的吗?我该如何使用:
Dim fso As New FileSystemObject
Dim fld As Folder
Dim ts As TextStream
Run Code Online (Sandbox Code Playgroud)
我收到错误,因为它无法识别这些对象.
我想通过包含双引号的vba在单元格中插入if语句.
这是我的代码:
Worksheets("Sheet1").Range("A1").Value = "=IF(Sheet1!B1=0,"",Sheet1!B1)"
Run Code Online (Sandbox Code Playgroud)
由于双引号,我在插入字符串时遇到问题.我该如何处理双引号?
Dim wkbkdestination As Workbook
Dim destsheet As Worksheet
For Each ThisWorkSheet In wkbkorigin.Worksheets
'this throws subscript out of range if there is not a sheet in the destination
'workbook that has the same name as the current sheet in the origin workbook.
Set destsheet = wkbkdestination.Worksheets(ThisWorkSheet.Name)
Next
Run Code Online (Sandbox Code Playgroud)
基本上,我遍历原始工作簿中的所有工作表,然后destsheet在目标工作簿中将其设置为与原始工作簿中当前迭代的工作表相同的工作表.
如何测试该表是否存在?就像是:
If wkbkdestination.Worksheets(ThisWorkSheet.Name) Then
Run Code Online (Sandbox Code Playgroud) 在VBA中,我以编程方式打开了名为"myWork.XL"的MS Excel文件.
现在我想要一个可以告诉我其状态的代码 - 无论是否开放.就是这样的IsWorkBookOpened("myWork.XL)?
这不是一个问题,而是发布此评论,因为我不记得以前看过这种方法.我回答了对之前回答的评论,并尝试了以前我没有尝过的事情:结果很有趣所以我虽然把它作为一个独立的问题发布,但我自己的回答.
在SO(以及许多其他论坛)上出现了许多关于"我的用户定义函数有什么问题"的问题,答案是"你无法从UDF更新工作表" - 这里的限制:
有一些方法可以解决这个问题,例如,请参阅此处(https://sites.google.com/site/e90e50/excel-formula-to-change-the-value-of-another-cell)但我不要以为我的确切方法就在其中.
另请参阅:从UDF更改单元格注释