我没有太多编写宏的经验,因此需要这个社区的帮助来解决以下问题:
我的宏复制在一个工作表中的垂直范围内输入的值范围,然后将值水平(转置)粘贴到另一个工作表中.理论上它会将第一张表中的值粘贴到第二张没有内容的工作表的第一行.由于前五行具有内容,因此将值粘贴到第六行.运行宏时遇到的问题是我觉得它太慢了,所以我希望它运行得更快.
我有相同的宏做同样的事情,但相反将值粘贴到另一个工作表到第一行,它运行完美.
因此,我最好的猜测是第二个宏运行缓慢,因为它必须在第六行开始粘贴,前五行可能会有一些内容花费大量时间让宏通过(有很多单元格引用其他工作簿)以确定下一行的粘贴位置.这是我最好的猜测,因为我几乎不知道宏,我不能肯定问题是什么.
我特此向您提供宏的代码,并真诚地希望有人能告诉我是什么让我的宏变慢,并为我提供了如何让它运行得更快的解决方案.我认为一个解决方案可能是宏可能不应该考虑前五行数据并立即开始在第6行粘贴第一个条目.然后在下一次第7行等等.这可能是一个解决方案,但我不知道如何编写代码以便它会这样做.
感谢您花时间帮我找到解决方案,以下是代码:
Sub Macro1()
Application.ScreenUpdating = False
Dim historyWks As Worksheet
Dim inputWks As Worksheet
Dim nextRow As Long
Dim oCol As Long
Dim myCopy As Range
Dim myTest As Range
Dim lRsp As Long
Set inputWks = wksPartsDataEntry
Set historyWks = Sheet11
'cells to copy from Input sheet - some contain formulas
Set myCopy = inputWks.Range("OrderEntry2")
With historyWks
nextRow = .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0).Row
End With
With inputWks
Set myTest = myCopy.Offset(0, 2)
If Application.Count(myTest) > …Run Code Online (Sandbox Code Playgroud) 我正在使用SPSS 15创建几个Excel报告,然后我使用Excel宏进行整合.不幸的是,特定的SPSS版本会生成.xls文件,这些文件对于Excel 2007及更高版本来说都不易读取.Excel 2003可以很好地吞噬这些文件,但是较新的Excel版本会显示两条错误消息.首先是"Excel在filename.xls中找到了不可读的内容.你想要恢复这个工作簿的内容吗?".单击是后,此后出现"文件错误:数据可能已丢失".不幸的是这些错误消息导致我的宏退出第一个文件,错误代码为1004.这是我用来打开我的Excel文件的代码:
If Len(Dir(ThisWorkbook.Path + "\filename.xls")) <> 0 Then
Workbooks.Open Filename:=ThisWorkbook.Path + "\filename.xls"
End If
Run Code Online (Sandbox Code Playgroud)
我与IBM(SPSS供应商)进行了核实,他们告诉我这个特殊问题已在SPSS 16中修复,但由于商业原因,升级不在卡上.现在有一个手动解决方法,涉及打开文件并再次保存,但有几十个显然没有乐趣的文件.因此,我正在寻找一种方法来自动修复宏中的那些损坏的工作簿.
更多信息:我们正在使用Excel 2010工作,Excel 2003不可用.此处提供了一个示例文件:https://onedrive.live.com/?cid = 52106BC267261CBF&id = 52106BC267261CBF!292
我在*.xlam加载项中创建了一个userform,并在IDE中创建了一个新的命令栏和按钮,但是当我单击该按钮时,用户窗体在Excel中打开,并且强制远离IDE.有没有办法在IDE而不是主机应用程序中打开用户表单而不诉诸.Net COM加载项?
以下是创建命令栏和按钮并处理按钮单击事件的代码.
Option Explicit
Public WithEvents cmdBarEvents As VBIDE.CommandBarEvents
Private Sub Class_Initialize()
CreateCommandBar
End Sub
Private Sub Class_Terminate()
Application.VBE.CommandBars("VBIDE").Delete
End Sub
Private Sub CreateCommandBar()
Dim bar As CommandBar
Set bar = Application.VBE.CommandBars.Add("VBIDE", MsoBarPosition.msoBarFloating, False, True)
bar.Visible = True
Dim btn As CommandBarButton
Set btn = bar.Controls.Add(msoControlButton, , , , True)
btn.Caption = "Show Form"
btn.OnAction = "ShowForm"
btn.FaceId = 59
Set cmdBarEvents = Application.VBE.Events.CommandBarEvents(btn)
End Sub
Private Sub cmdBarEvents_Click(ByVal CommandBarControl As Object, handled As Boolean, CancelDefault As Boolean)
CallByName …Run Code Online (Sandbox Code Playgroud) 在C/C++中,当我有一堆函数(指针)时,我可以将它们存储在数组或向量中,并按特定顺序将它们中的一些调用在一起.可以在VBA中做类似的事情吗?
谢谢!
我有一个相当直截了当的问题.我试图通过VBA(宏代码)找到一种方法来改变和更改excel工作簿中现有数据连接的连接字符串.我尝试这样做的主要原因是找到一种方法来提示打开工作簿的用户输入他们的凭据(用户名/密码)或者有一个可信连接的复选框,该复选框将在现有的连接字符串中使用数据连接.

现在,数据连接正在运行我创建的示例用户,并且需要在工作簿的生产版本中消失.希望有道理吗?
这可能吗?如果是的话,你能给我一个示例/示例代码块吗?在此,我真的很感激任何建议.
我在vba中总是遇到运行时错误:
Sub rsa()
Dim c1 As Long
Dim c2 As Long
Dim z As Long
Dim e As Long
pt = "xa"
n = 187
e = 7
For i = 1 To Len(pt)
b = Mid$(pt, i, 1)
If b <> " " Then
z = Asc(UCase(b))
'Here is the problem:
c = z ^ e Mod n
Text = Text & c
Else
Text = Text & " "
End If
Next i
Cells(20, 4).Value = Text
End …Run Code Online (Sandbox Code Playgroud) 我需要通过VBA访问网络文件服务器上托管的文件夹.只能通过服务帐户(与普通用户帐户不同)以书面形式访问该文件夹,我有用户名和密码.
通过UI,我可以看到该文件夹并将其映射为本地驱动器,但为了以书面形式访问它,我需要从Windows注销并通过服务帐户登录.
有没有办法在普通用户会话期间访问网络文件夹,但在VBA代码中硬编码用户名和密码?
我尝试将文件夹映射为本地驱动器:
Set WshNetwork = CreateObject("WScript.Network")
WshNetwork.MapNetworkDrive "S:", "\\corp-server\HostingFolder", False, Username, pwd
Run Code Online (Sandbox Code Playgroud)
但没有工作("S"驱动器没有映射).如果相反我做同样但没有提供用户名和密码:
Set WshNetwork = CreateObject("WScript.Network")
WshNetwork.MapNetworkDrive "S:", "\\corp-server\HostingFolder"
Run Code Online (Sandbox Code Playgroud)
它完美地运作.
现在想知道我想要做的事实际上是否可行?如果没有,还有其他选择吗?
谢谢
在此页面上,我看到以下代码:
if ((attributes & FileAttributes.Hidden) == FileAttributes.Hidden)
Run Code Online (Sandbox Code Playgroud)
但我不明白为什么会这样.
为什么attributes & FileAttributes.Hidden)?实际上,单一检查有什么作用attributes?它检查它是否不为空?我有一种感觉,但我觉得很奇怪.随机而怪异.
我通过使用这个肮脏的黑客解决了我的问题:
' Filter managerial functions
ActiveSheet.Range("$A$1:$BW$2211").AutoFilter Field:=36, Criteria1:="<>Head*", _
Criteria2:="<>IT*", Operator:=XlAutoFilterOperator.xlAnd
ActiveSheet.Range("$A$1:$BW$2211").AutoFilter Field:=36, Criteria1:="<>Local Head*", _
Criteria2:="<>Resp*", Operator:=XlAutoFilterOperator.xlAnd
ActiveSheet.Range("$A$1:$BW$2211").AutoFilter Field:=36, Criteria1:="<>Team Lead*", _
Criteria2:="<>XB*", Operator:=XlAutoFilterOperator.xlAnd
Run Code Online (Sandbox Code Playgroud)
有没有办法将这3个语句合并为一行?一旦我在一行中有第三个标准(Criteria3),Excel似乎就会出现问题.此外,似乎不支持<> Array().
我的访问表单上有一点问题.
我有两种形式:
输入表单空闲一分钟后,我想关闭它并返回菜单表单.
这是我的代码不起作用.
Public ExpireTime As Date 'expiration time-date value
Sub ResetExpiration()
If ExpireTime <> 0 And ExpireTime > Now Then
Application.OnTime ExpireTime, "FormExpire", schedule:=False
End If
ExpireTime = Now + 1 / 1440#
Application.OnTime ExpireTime, "FormExpire", schedule:=True
End Sub
Run Code Online (Sandbox Code Playgroud)
我还在其中创建了一个宏.
Sub FormExpire()
Unload input-form
End Sub
Run Code Online (Sandbox Code Playgroud) vba ×9
excel ×7
excel-vba ×7
.net ×1
access-vba ×1
autofilter ×1
bitmask ×1
c# ×1
commandbar ×1
ide ×1
ms-access ×1
networking ×1
odbc ×1
shared ×1
spss ×1
timer ×1
userform ×1
vbide ×1