Tag: excel 2003

在Excel中:如何确定01/01/1900然后打印出空string,否则显示date

我试图显示除01/01/1900以外的所有date。 在Excel中,我如何首先检查01/01/1900,然后用空string或“”replace该date,但是只剩下其他date? 我还需要保持格式设置为mm / dd / yyyy的小date格式。 我试着用replace,if,date,datevalue命令没有成功。

将Excel工作表,macros和graphics从一个工作簿复制到另一个,将链接移动到新的工作簿

我有一个Excel工作簿具有一些function: 一个主要的面向用户的工作表 一张基于面向用户的工作表数据的汇总表 一些基于面向用户的工作表数据的graphics(如图表types,它们具有单独的选项卡,而不是工作表内的对象 – 我不确定它们是否具有特殊名称或特殊属性) 一系列“背景”工作表,用于计算面向用户的工作表的值 一个macros,允许用户按照他们希望的任何列对用户表进行sorting,这是在用户工作表的Worksheet_SelectionChange事件中引用的 但是,为了便于分布,我想剔除这些表格(文件大小 – 整个数据查询包含在其中一张表格中)。 我仍然需要计算面向用户的工作表的值,但是每个数据集只能执行一次,因此可以非常高兴地将其作为格式和值进行复制。 但是,麻烦在于将依赖图纸,graphics和macros转移到新的工作簿中,以便引用新版本的工作簿而不是引用旧的工作簿。 理想情况下,我想用VBA或者其他方法来做到这一点,但是我的Googlesearch到目前为止似乎没有什么关联。 有谁知道如何做到这一点?

Excel的ActiveXcombobox中的错误?

我注意到,当出现各种烦人的错误时: 我有一个工作表上的ActiveXcombobox(而不是一个Excel表单) combobox具有链接到它们的事件代码(例如onchange事件) 我使用他们的listfillrange或linkedcell属性(清除这些属性似乎缓解了很多问题) (不知道这是否连接),但有针对性的linkedcell有数据validation。 我编写了一个相当复杂的excel应用程序,可以处理大量的事件并使用大量的控件。 几个月来,我一直在试图处理与这些combobox有关的各种错误。 现在我不记得每个实例的所有细节,但是这些错误往往涉及将listfillrange和linkedcell属性指向指定的范围,并且经常与在不适当的时候触发的combobox事件有关(例如当application.enableevents = false)。 这些问题似乎在Excel 2007中变得越来越大,所以我不得不完全放弃这些combobox(我现在使用包含在用户表单中的combobox,而不是直接在表单上)。 有其他人看过类似的问题吗? 如果是这样,有没有一个优雅的解决scheme? 我曾与谷歌环顾四周,迄今还没有发现任何有类似问题的人。 我最终看到的一些症状是: 当我启动时(包括combobox_onchange,listfillrange->在另一个不同的工作表上命名的范围和workbook_open交互),Excel崩溃。 (注意,在用户直接编辑它们的情况下,我也对链接​​的单元格进行了一些数据validation。) Excel渲染错误(通常当combobox发生变化时,另一个工作表中的某些单元格会随机地在当前工作表的顶部进行绘制)。有时候,它会将屏幕完全闪烁到另一个工作表中。 Excel失去了主意(或者说,调用堆栈)(与第一个重点相关)。 有时,当一个函数修改combobox的属性时,comboboxonchange事件触发,但是它永远不会将控制返回到导致首先更改的function。 即使在application.enableevents = false的情况下也会触发combobox_onchange事件。 事件发生时,他们不应该(我发布了与此有关的堆栈溢出的另一个问题)。 在这一点上,我相当确信ActiveXcombobox是邪恶的化身,不值得麻烦。 我已经转而将这些combobox包含在一个用户窗体模块中。 我宁愿用popup窗体的用户比随机视觉文物和崩溃(与数据丢失)不便。

如果公式不断增加,那么如何将公式插入单元格?

我在Pth列的第二行input了这些公式: =(COUNTIF(A$1:A1,A2)=0)+(COUNTIF(B$1:B1,B2)=0)+(COUNTIF(F$1:F1,F2)=0) 当我把它拖到第P列的第三行时,它就是这样的: =(COUNTIF(A$1:A2,A3)=0)+(COUNTIF(B$1:B2,B3)=0)+(COUNTIF(F$1:F2,F3)=0) 这是我手动做的。 我如何使用VBA? 我尝试了下面的方法。 cells(Count,"M").formula= "=(COUNTIF(A$1:A1,A2)=0)+(COUNTIF(B$1:B1,B2)=0)+(COUNTIF(F$1:F1,F2)=0)" 但它不工作。 这不是从改变 "=(COUNTIF(A$1:A1,A2)=0)+(COUNTIF(B$1:B1,B2)=0)+(COUNTIF(F$1:F1,F2)=0)" 至 "=(COUNTIF(A$1:A2,A3)=0)+(COUNTIF(B$1:B2,B3)=0)+(COUNTIF(F$1:F2,F3)=0)" 如果公式不断增加,那么如何将公式插入单元格?

Excel VBA中的定时警报

我制作了一个日历来跟踪Excel 2003中的任务和类似项目。我需要做的是通过VBA设置一个计时器。 像这样的东西: run_in_x_secs ( timetowait, function to exec) 有没有办法在Excel VBA中做到这一点,或者我应该尝试find一个警报,通过命令行运行并从VBA运行。 你会怎么做?

如果所有的Excel列值不一致,则返回

Excel电子表格中有以下数据: ABC 1 bbb 我想在数据之后的列中放入一个公式,比较行中的每个(文本)值,如果它们都相同,即A = B = C,则返回TRUE。 如果一个或多个值不同意,我希望它返回FALSE。 即 ABCD 1 bbb TRUE 2 beb FALSE 3 ebb FALSE 我知道像AND这样的逻辑函数,因此可以构build类似的东西 AND(A1=B1,A1=C1.. etc) ,然而,一旦列数增加,这很快就会变得难以处理。 重组数据是不可行的。 有谁知道一个OOTB / VB解决scheme?

在Excel 2003 vba中插入新行很慢

我是vba的新手 – 我从字面上来说只做了3天。 无论如何,我有几个表单从用户那里获取一些数据,然后我把它们写到一个单独的“日志”表的最上面一行。 我正在使用这个: With Worksheets("Log") .Unprotect .Range("A2").EntireRow.Insert Shift:=xlDown .Range("A2") = varToken .Range("B2") = varAction .Range("C2") = varLocation .Range("D2") = varTracking .Range("E2") = Date .Range("F2") = Time .Range("G2") = varPerson .Range("H2") = varOverride .Protect End With 麻烦的是,它在日志表中弹了半秒钟,然后花费很长时间来写。 我把它写到日志的最上面一行的原因是,我使用varToken的100个vlookup(有100个不同的标记来查找)在前面的表格中汇总了数据,它们查找第一个(即top)条目在日志表中。 如果更快,我可以写入日志表的底部,但是之后我需要一个代码来replace100个将查找最后一个令牌的代码,这个代码可能会在成千上万的行中出现,并且会很快运行! 提前致谢!

Excel VBA – 如何插入普通值没有公式?

我已经浏览了许多Excel VBA主题,但是,我还没有find任何关于插入普通值的信息 – 在这种情况下SUM()的结果 – 不是公式。 有一种方法, PasteSpecial xlPasteValues ,但它似乎不是我正在寻找。 下面的代码示例插入公式,不仅是值: Sub test() Range("A4").Value = "=SUM(A1:A3)" End Sub 如何在Excel VBA中插入不含公式的普通值?

Workbooks.Open方法在VBA中

我在myMacro.xls Workbooks.Open方法中的vba脚本如下所示, Workbooks.Open Filename:="D:\ExcelMacroProj\myTest.xls", ReadOnly:=True 但是,当我尝试将Filename值更改为下面的新path,但我所有的做法都不起作用。 显示运行时错误1004 。 Workbooks.Open Filename:="myTest.xls", ReadOnly:=True or Workbooks.Open Filename:="./myTest.xls", ReadOnly:=True or Workbooks.Open Filename:=".\myTest.xls", ReadOnly:=True 其实myMacro.xls和myTest.xls被放置在同一个文件夹中。 这就是为什么我想要更改为灵活的文件夹目录。 我怎么能解决这个问题? 赞赏您的阅读和答复。

VBA – 运行时错误1004'应用程序定义或对象定义错误'

我有一个Excel文档,第一次运行时将模板复制到新工作表中。 跟随此模板的任何更多工作表将附加到新创build的工作表。 我在代码的这一部分的标题中得到错误: If Worksheets("User Configuration").Cells(9, 15).Value = 1 Then Worksheets("Cable Cards Template").Range("A1:J33").Copy With Worksheets("Cable Cards") **.Range(Cells(RangeStartRow, RangeStartColumn), Cells(RangeEndRow, RangeEndColumn)).PasteSpecial xlValues** .Range(Cells(RangeStartRow, RangeStartColumn), Cells(RangeEndRow, RangeEndColumn)).PasteSpecial xlFormats End With Worksheets("Cable Cards Template").Shapes("Picture 1").Copy Worksheets("Cable Cards").Paste Cells(RangeStartRow, RangeStartColumn) Call Sheets.FormatCableCardRows End If 基本上,如果If语句为真(单元格= 1),那么应该复制特定工作表上的一个范围并将其粘贴到使用PasteSpecial给定范围内的新工作表中以获取值和格式。 之后,“新创build的”工作表应该将图像复制到模板的左上angular单元格中,然后调用子例程来格式化新工作表的行。 在With Worksheets("Cable Cards")声明之后的第一个.Range调用中出现错误。 我试过不使用With语句,直接复制值而不是粘贴特殊等。奇怪的是,这将运行在第一个去,当新的工作表创build通过: If (RangeStartRow = 1) Then Worksheets.Add().Name = "Cable […]