我正试图在excel中遍历一个表.该表的前三列有文本标题,其余部分的日期为标题.我想按顺序将这些日期分配给Date类型变量,然后根据日期执行一些操作
为此,我在myTable.ListColumns上使用foreach循环.由于前三列没有日期标题,我试图设置循环,以便,如果将标题字符串分配给日期类型变量时出错,则循环直接进入下一列
这似乎适用于第一列.但是,当第二列的标题被"赋值"给日期类型变量时,即使宏位于错误处理块内,宏也会遇到错误
Dim myCol As ListColumn
For Each myCol In myTable.ListColumns
On Error GoTo NextCol
Dim myDate As Date
myDate = CDate(myCol.Name)
On Error GoTo 0
'MORE CODE HERE
NextCol:
On Error GoTo 0
Next myCol
Run Code Online (Sandbox Code Playgroud)
重申一下,在语句的第二轮循环中抛出错误
myDate = CDate(myCol.Name)
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么On Error语句停止工作?
测试相同自定义对象类型的两个变量是否引用同一对象的运算符或函数是什么?我试过了
If myObject = yourObject Then
Run Code Online (Sandbox Code Playgroud)
但是获取运行时错误438对象不支持此属性或方法.我猜这是告诉我覆盖'='运算符来测试两个对象的所有字段是否具有相同的值.但我想要的是测试它们是否是同一个对象.
我的项目需要一堆可动态调整大小的数组用于不同的对象.数组可以包含单个类的任意数量的对象(可能是数千个),但不包含多个类的对象.
大多数情况下,我将遍历数组,因此使用键控集合并不理想.我想我有两个选择:
第一个选项是为每个对象类型开发一个'List'类,包括添加对象(和扩展数组),获取First和Last索引以及对象计数,以及通过索引检索对象的方法(后4将包括错误处理,以防数组为空).
第二个选项是使用Variant数据类型使用相同的方法开发单个"List"类.显然这是一项很少的工作,但我担心速度.使用变体比使用类型对象慢多少?请注意,我将始终在检索时将数组中的变体对象直接转换为类型变量,la:
Dim myObject As MyClass
Set myObject = variantList.Get(i)
Run Code Online (Sandbox Code Playgroud)
铸造是否提高了速度,还是vba仍然必须执行与变体相关的所有类型检查?
此外,第二个选项是否比使用非键控收集更快?我已经读过Collection迭代很慢,它们是为查找而设计的.这适用于非键控集合,还是仅适用于键值映射集合?
感谢任何可以提供建议的人.
我的工作表有很多表.我需要特别操纵一个.当然,我可以简单地查看它的单元格数并逐个单元地操作它,但是有没有"get"函数以编程方式"获取"表格?
如果是这样,那我怎么操纵细胞呢?是否有命令"获取"整个标题,或整个列的标题(而不是其列号)/
如果有人知道解释这个的指南,那就足够了.我尝试使用谷歌搜索它,但所有结果都是关于数据库表,即从数据库填充电子表格.
简单的问题,我希望,但研究只提出了论坛帖子,提供了一堆代码,而没有解释任何代码.
我的工作簿的第一张就像一个内容页面.A列中的每个单元格都包含一个IP地址字符串.对于每个IP地址,都有一个单独的工作表,使用IP地址命名.我想将内容页面的A列中的单元格转换为其相应图纸(目标图纸的单元格A1)的超链接.
我只需要制作超链接的VBA行; 我可以弄清楚循环等.请记住,要链接的页面的名称与将成为链接的单元格的值完全相同.
我的一张表列出了一系列阶段(目前阶段2-12,阶段1已经完成).每个阶段在col A中有一个数字,在col B中有一个开始日期,在col C中有一个结束日期.阶段是连续的,并且按照从最早到最晚的顺序列出.
有没有办法可以在给定的日期返回它落入的阶段?我在vba中有一个函数,但我希望可能有一些内置的公式(或某种方式陪审团装备一堆内置公式).基本上我想要返回一个阶段的编号,该阶段的开始日期小于或等于给定日期,结束日期大于或等于该日期.感谢任何可以提供帮助的人.
我有一列日期.这些将被合并到对象中,每行一个,以及行中的其他数据.
但是,日期列中的某些单元格为空.在测试时,我创建一个日期变量并将其值设置为空单元格的值.我msgbox了日期的新值,发现它是"12:00 AM".VBA中是否有一个常量来表示此值,因此我可以执行类似于以下的测试:
If myDate = vbNullDate Then
Run Code Online (Sandbox Code Playgroud) 我有一个包含日期序列作为列标题的工作表.日期是手动输入的,不一定是连续的.
我想要一个公式,可以在此工作表中查找今天的日期,并从该列返回一个值.我使用HLOOKUP将日期作为字符串输入,即
HLOOKUP("16/08/2012", Statuses!$1:$5, 5, FALSE)
Run Code Online (Sandbox Code Playgroud)
但是,我不想手动输入日期,我想使用TODAY()公式.但是用这个公式替换字符串会返回#N/A. 我猜是因为日期已在查找表上手动输入,值不完全相同.
有没有办法解决这个问题,比如限制TODAY()公式的返回到当天的开始?
通常我会问工作的东西,所以这里有些不同.为了以尽可能最讨厌的方式解决我的新年决心,我正在excel文件中创建一个健身房计划.我会做渐变套装,这意味着每套我增加10%的重量.我正在使用的公式允许输入基重(例如,上周的最大值),并计算所有先前的套数,圆形,向上或向下,精确到2.5kg(酒吧每侧1.25kg的板;可用的最小增量).
=CEILING(($B13 - ($A$2 * 0.1)) - 1.25, 1.25 * 2)
Run Code Online (Sandbox Code Playgroud)
在该式中,B13是此后的下一组,A2是基重.所以每组的基重比前后的10%小,通过CEILING功能四舍五入到最接近的2.5kg.
这是踢球者:我将带着的设备是Windows Phone 7(我知道,我知道!).它的Excel程序显然不支持CEILING功能(或FLOOR).有没有办法使用支持的公式实现这一点,根据MS支持,它是:
ABS,ACOS,AND,ASIN,ATAN,ATAN2,AVERAGE,CHOOSE,COLUMNS,CONCATENATE,COS,COUNT,COUNTA,COUNTBLANK,COUNTIF,DATE,DATEVALUE,DAVERAGE,DAY,DCOUNT,DCOUNTA,DDB,DEGREES,DGET,DMAX, DMIN,DPRODUCT,DSTDEV,DSTDEVP,DSUM,DVAR,DVARP,ERROR.TYPE,EXACT,EXP,FACT,FIND,FV,HLOOKUP,HOUR,IF,INDEX,INT,IRR,ISBLANK,ISERR,ISERROR,ISLOGICAL,ISNA, ISNONTEXT,ISNUMBER,ISTEXT,LEFT,LEN,LN,LOG,LOG10,LOOKUP,LOWER,MATCH,MAX,MID,MIN,MINUTE,MOD,MONTH,N,NA,NOT,NOW,NPER,NPV,OR,PI PMT,POWER,PRODUCT,PROPER,PV,RADIANS,RAND,RANK,RATE,REPLACE,REPT,RIGHT,ROUND,ROWS,SECOND,SIN,SLN,SQRT,STDEV,STDEVP,SUBSTITUTE,SUM,SUMIF,SUMPRODUCT,SYD, T,TAN,TIME,TIMEVALUE,TODAY,TRIM,TRUNC,UPPER,VALUE,VAR,VARP,VLOOKUP,YEAR,FALSE和TRUE.
对于那些想知道的人,不,我发誓,我不会像听到的那样孤独.
我在三列中有一大堆日期,由几个宏使用.目前,使用这些日期的每个宏必须:
这还包括检查单元格是否为空,检查日期是否有效.
而不是这个,我希望有一个宏将这些日期读入(VBA)数组,只要文件被打开就会持续存在.我还希望在打开文件时运行此宏,以便在运行使用它们的任何宏时保证日期初始化.
有办法做这些事吗?
当我手动向单元格添加注释时(使用insert comment命令),文本前面是我的粗体字用户名.
是否可以使用(对于运行宏的用户)为vba中创建的注释复制此特性Range.AddComment()?