我有一个宏在"Worksheet_SelectionChange"事件中触发.宏验证一列的数据,如果错误则更改单元格的背景颜色.
问题是在运行宏之后,它清除了所有文档的更改历史(Ctrl Z),甚至是我未验证的其他单元格的历史更改.
我怎么解决这个问题?
谢谢.
在数据表视图中查看Microsoft Access表时,最右侧的列标题为"单击以添加",允许某人在不使用"设计视图"的情况下添加新列.是否可以隐藏此列?
尝试加载Excel工作簿时发现奇怪的行为.
我有一个Excel-AddIn,用.NET Interop编写.它主要用于创建我自己的Ribbon-Tab,从菜单中加载工作簿并进行一些项目管理.
当我尝试使用两种方式打开工作簿时,我会得到不同的结果:
首先,当我从Addin中加载工作簿(Excel 2003-版本)时,一切正常.从功能区的Button-Event中,openWorkbook调用application.workbooks.open(...)加载项的公共函数,用于加载Excel工作簿.
这样,工作簿打开时没有错误.
其次,当我尝试使用以下代码从VBA中调用Addin-Function时:
Set addIn = Application.COMAddIns("WMExcelAddin1")
Set automationObject = addIn.Object
automationObject.openWorkbook (filename)
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息:
编译错误
自动化错误
并且IDE在其中一个工作簿模块中第一次出现条件编译时停止,如下所示:
#const ebind = 0
[...]
sub proc1()
#if ebind = 1 then ' IDE Stops here
[...]
#else
[...]
#end if
end sub
Run Code Online (Sandbox Code Playgroud)
我试图使用布尔数据类型而不是具有相同效果的数字.
我的智慧结束了.
我使用此代码将文件夹中的所有文件压缩到新创建的.zip文件中:
Dim FileNameZip, FolderName
Dim filename As String, DefPath As String
Dim oApp As Object
(defining all paths needed)
'Create empty Zip File
NewZip (FileNameZip)
Set oApp = CreateObject("Shell.Application")
'Copy the files to the compressed folder
oApp.Namespace(FileNameZip).CopyHere oApp.Namespace(FolderName).items
'Keep script waiting until Compressing is done
On Error Resume Next
Do Until oApp.Namespace(FileNameZip).items.Count = oApp.Namespace(FolderName).items.Count
Application.Wait (Now + TimeValue("0:00:01"))
Loop
Run Code Online (Sandbox Code Playgroud)
只要我的目标文件夹与我的文件所在的文件夹不同,这就没有问题.
但是当我尝试从文件夹中取出所有文件,将它们放入并在同一文件夹中生成存档时,我遇到了问题 - 它创建了存档,然后尝试将其放入自身,这当然失败了..zip
我正在寻找一种方法来压缩文件夹中的所有文件,除了这个新创建的文件. …
我有以下代码,我希望它在25个其他工作簿中运行,而不是重复代码25次,因为每个工作表有没有办法让它循环?
有人可以帮忙吗?
Sub DeleteEmptyRows()
Dim ws As Worksheet
Dim strSearch As String
Dim lRow As Long
strSearch = "ressort"
Set ws = Sheets("01,02,03")
With ws
lRow = .Range("A" & .Rows.Count).End(xlUp).Row
With .Range("A1:A" & lRow)
.AutoFilter Field:=1, Criteria1:="=*" & strSearch & "*"
.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
ActiveSheet.Range("$A$1:$P$65536").AutoFilter Field:=1
End With
End Sub
Run Code Online (Sandbox Code Playgroud) 我有一个Excel工作簿(1),大约有9张工作簿,可以从第二个工作簿中提取和操作数据(2).
从工作簿(2)中提取数据后,我需要能够将工作簿(1)中的公式替换为公式生成的结果值,然后从此处将结果保存在工作簿(1)中.
有没有可以为我做这个的宏?
我正在尝试使用VBA从指定目录打开.msg文件,但我不断收到运行时错误.
我有的代码:
Sub bla()
Dim objOL As Object
Dim Msg As Object
Set objOL = CreateObject("Outlook.Application")
inPath = "C:\Users\SiliconPlus\Desktop\Si+ Contact Lists\Contact_Si+"
thisFile = Dir(inPath & "\*.msg")
Set Msg = objOL.CreateItemFromTemplate(thisFile)
' now use msg to get at the email parts
MsgBox Msg.Subject
Set objOL = Nothing
Set Msg = Nothing
End Sub
Run Code Online (Sandbox Code Playgroud)
这是运行时错误:
运行时错误'-2147287038(80030002)':
无法打开文件:AUTO Andy Low Yong Cheng不在办公室(2014年9月22日返回).msg.
该文件可能不存在,您可能没有权限打开它,或者它可能在另一个程序中打开.右键单击包含该文件的文件夹,然后单击"属性"以检查该文件夹的权限.
我想用以下代码创建一个目录和一个子目录:
Public fso As Scripting.FileSystemObject
Set fso = New Scripting.FileSystemObject
fso.CreateFolder ("C:\Users\<my_username>\DataEntry\logs")
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建嵌套目录.在这种情况下,该DataEntry目录将不存在,所以基本上我想创建2个目录,DataEntry\logs下C:\Users\<username>
如果我输入命令提示符,我可以创建该目录而mkdir没有任何问题.但是,我根本无法让VBA创建该文件夹,我得到:
Run-time error '76':
Path not found
Run Code Online (Sandbox Code Playgroud)
我使用的是Excel VBA 2007/2010
我试图找出如何comma-separated在以下url字符串中的值上重复捕获组:
id=1,2;name=user1,user2,user3;city=Oakland,San Francisco,Seattle;zip=94553,94523;
我正在使用这RegExp是我想要的返回结果,除了值,因为它们是动态的,即.可能是url参数中的2,3,4等用户,并且想知道我是否可以为每个值而不是一个捕获组创建user1,user2,user3捕获组.
正则表达式: (^|;|:)(\w+)=([^;]+)*
这是使用RegExp在线的现场演示
示例输出:
等...基于我之前解释过的动态值.
问题:我的表达式错误我正在使用*循环来重复模式?
使用Ron de Bruin 的RangeToHTML函数,我将一个范围粘贴到Outlook电子邮件中.但是,似乎正在将一个额外的空白行粘贴到电子邮件中,如下所示:
我已经确认该Source:=TempWB.Sheets(1).UsedRange.Address行正确地只抓取数据本身而不是额外的行.我也确认输入范围RangetoHTML()也是正确的.我唯一的猜测是该.ReadAll方法以某种方式在文件中添加了一行,但我不知道如何调试它.这是RangetoHTML我正在使用的功能,以便于参考:
Function RangetoHTML(rng As Range)
' By Ron de Bruin.
Dim fso As Object
Dim ts As Object
Dim TempFile As String
Dim TempWB As Workbook
Application.ScreenUpdating = False
Application.EnableEvents = False
TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
'Copy the range and create a new workbook to past the data in
If rng Is Nothing Then GoTo Skip
rng.Copy
Set TempWB …Run Code Online (Sandbox Code Playgroud)