我有一个生成许多工作簿的宏.我希望宏在运行开始时检查文件是否包含2个电子表格,如果存在则删除它们.
我试过的代码是:
If Sheet.Name = "ID Sheet" Then
Application.DisplayAlerts = False
Sheet.Delete
Application.DisplayAlerts = True
End If
If Sheet.Name = "Summary" Then
Application.DisplayAlerts = False
Sheet.Delete
Application.DisplayAlerts = True
End If
Run Code Online (Sandbox Code Playgroud)
此代码返回错误:
运行时错误#424,需要对象.
我可能有错误的格式,但如果有更简单的方法,这将是非常有用的.
我有大约4000个单元格,每个单元格有大约4个单独的文本行.已使用ALT + ENTER方法输入每行文本.
任何人都可以建议一种方法,VBA或Excel命令/方法将这些单元格中的每一个转换为一行,单词之间有空格.
示例:当前单元格1:
需要:细胞1:
任何帮助深表感谢
我有一个宏(下面),设计为在结束前运行150,000次迭代.但是,在我运行代码超过1,000次迭代后,Excel进入"无响应"模式,然后崩溃.我已经离开它超过12个小时,但它没有变得更好.该代码先前已用于运行前100,000次迭代,并且需要以250,000的阶段运行多达1,048,576次迭代.
崩溃还会导致Outlook,IE以及Chrome(尽管我已经停止同时运行它们,但仍然崩溃).
如果我通过F8运行代码,或通过F5运行检查点,代码运行正常.但是,这对于另外的948,576次迭代来说是不切实际的.
有关如何解决问题的任何建议,所以它不会不断崩溃?
系统规格为:Excel 2010 i5(第3代)8 GB RAM
码:
Dim a As Variant
Dim b As Variant
Dim c As Variant
Dim d As Variant
Dim e As Variant
Dim i As Integer
Dim j As Double
Dim strResult As Double
a = 1
b = 100001
While b <= 250000
While a <= 12
If a = 1 Then
If Cells(b, 14) = "EEEE" Then
Cells(b, a) = 1234
ElseIf Cells(b, 14) = "ZYXW" Then
Cells(b, a) = …Run Code Online (Sandbox Code Playgroud) 我在一个办公室工作,我们有一些业余的Excel"专家",他们不断尝试"改进"(即快捷方式,改变逻辑,重写以使"更快")电子表格.当我在一个监管非常规的世界里工作时,宏需要得到公司,客户和监管机构的批准,改变宏是非常禁止的.
其中一个问题是我们有人能够进入代码,即使我们已经设置了密码保护来将工作表设置为只读,并且还在VBA属性屏幕中设置了密码.用户似乎能够绕过密码,并进入主代码,而无需设置密码.
还有什么可以阻止他们进入代码吗?提到的一个想法,但我找不到它的参考是阻止VBA屏幕打开.可以这样做吗?任何其他建议将被感激地接受.
我有一个很大的数据库,存在各种不一致的情况。我想澄清的项目之一是根据人口改变国家地位。
数据样本是:
{ "_id" : "D", "name" : "Deutschland", "pop" : 70000000, "country" : "Large Western" }
{ "_id" : "E", "name" : "Eire", "pop" : 4500000, "country" : "Small Western" }
{ "_id" : "G", "name" : "Greenland", "pop" : 30000, "country" : "Dependency" }
{ "_id" : "M", "name" : "Mauritius", "pop" : 1200000, "country" : "Small island"}
{ "_id" : "L", "name" : "Luxembourg", "pop" : 500000, "country" : "Small Principality" }
Run Code Online (Sandbox Code Playgroud)
显然,我想根据人口规模将国家/地区字段更改为更加统一的内容。
我已经尝试过这种方法,但显然缺少某种与国家/地区字段更新联系起来的方法。
db.country.updateMany( { case …Run Code Online (Sandbox Code Playgroud) 我正在慢慢地教自己VBA,如果这是相当直接的,那么道歉.
我在多个工作表中进行了大量计算(10多张,30000多行,250多列,大约50%具有依赖性).
我有一个VBA程序,它运行一个变量列表,一次更改一个变量,并产生答案.问题是这些变量将使用公式更改所有单元格中的值.
但是,每次更改变量时,我都不需要重新计算所有工作表.
有没有办法告诉VBA只重新计算活动工作表或指定的工作表?
我有一个包含大约 20 个模块的 VBA 宏,它们在工作簿中创建单独的电子表格。他们还将宏的每个模块创建的单个电子表格保存到共享驱动器上的特定文件夹中。
这是将电子表格保存到单独文件夹的几行示例。
z = Format(DateTime.Now, "dd-MM-YYYY hhmm")
wb.SaveAs "J:\AAAA\BBBB\CCCC\DDDD\mod1" & z & ".xlsx"
Workbooks("mod1" & z & ".xlsx").Close savechanges:=True
Run Code Online (Sandbox Code Playgroud)
但是,由于此文件现在在许多用户之间共享,具有不同的功能,因此用户现在希望能够单独设置生成的电子表格的保存位置。
我正在寻找的是宏打开新窗口以及用户选择文件路径的某种方式。然后将该文件路径存储到宏中,以便每个模块都可以读取需要存储的文件位置。
这可能吗?
编辑1:
我应该把一些事情说得更清楚。我很抱歉。
上面的代码在每个模块中都有复制。此外,所有模块都从一个总体模块运行,该模块调用另一个模块。
我正在寻找的是允许用户在总体模块开始时选择保存位置的代码。例如。J\AAA\CCC\XXX。模块在调用时将检索文件路径,然后将文件保存到该位置。
寻找一些建议.我在单元格中使用字母和数字组合的单元格值.每个值为6个字母,后跟0000后跟4个字母,然后是5到8个数字.例如
IIKBAR0000EEEE510002
MQYUQF0000EEEE410003
MWWVIQ0000ZYXW210004
DJHZXL0000BBBB410005
Run Code Online (Sandbox Code Playgroud)
这些或多或少是完全随机的,其中有100k到1,048,576之间!
有没有什么方法可以将字母转换为数字(即A = 1,B = 2,Z = 26等)而无需告诉VBA每个字母的值?我目前使用的代码非常慢,因为它有26个If-Else案例.