我在VBAmacros中得到Procedure too Large Error 。 我正在使用MS-Excel 2003。
我有一个macros,我在文本框中指定date(以mm / dd / yyyy),我想以yyyy-mm-dd格式为列A设置此值。 我有以下代码: Sheets("Sheet1").Range("A2", "A50000").Value = TextBox3.Value Sheet1.Range("A2", "A50000") = Format(Date, "yyyy-mm-dd") …当我运行macros时,date仍然是mm / dd / yyyy格式。 我怎样才能改变这一点,以便我想要的格式? 我一直在尝试通过谷歌研究的各种代码,没有什么会按照我想要的方式设置格式。 任何帮助将不胜感激… 编辑:从OP的评论下面的完整代码: Workbooks.Add Range("A1") = "Acctdate" Range("B1") = "Ledger" Range("C1") = "CY" Range("D1") = "BusinessUnit" Range("E1") = "OperatingUnit" Range("F1") = "LOB" Range("G1") = "Account" Range("H1") = "TreatyCode" Range("I1") = "Amount" Range("J1") = "TransactionCurrency" […]
我想用Excel VBA分割一个string与多个delimeters。 其中一个string是: d1-d2 d3 d4 我们有一个短划线和一个空格作为两个分隔符。 我尝试了splitfunction,但它只有一个分隔符。
我有一串macros调用对方并引用工作簿A和B.我希望第一个macros提示用户select文档A和B,这些select成为工作簿A和Bvariables我在各种macros。 我如何使选定的文件在所有的macros中引用variables? 提前致谢!
我试图找出如何声明一个二维数组,但我迄今为止发现的所有例子都是用set整数声明的。 我试图创build一个程序,将利用两个二维数组,然后对这些数组(如发现差异或百分比)执行简单的操作。 数组由Excel表格中的数字填充(一组数字在Sheet1上,另一组在Sheet2上,两组数据具有相同的行数和列数)。 因为我不知道有多less行或列有我要使用variables。 Dim s1excel As Worksheet Dim s2excel As Worksheet Dim s3excel As Worksheet Dim firstSheetName As String Dim secondSheetName As String Dim totalRow As Integer Dim totalCol As Integer Dim iRow As Integer Dim iCol As Integer Set s1excel = ThisWorkbook.ActiveSheet ' Open the "Raw_Data" workbook Set wbs = Workbooks.Open(file_path & data_title) […]
人们普遍认为这不是“最佳做法”。 dim rng as range with thisworkbook '<~~ possibly set an external workbook with .worksheets("sheet1") set rng = .range(cells(2, 1), cells(rows.count, 1).end(xlup)) end with end with 定义Range对象范围的两个Range.Cell属性将默认为ActiveSheet属性 。 如果这不是Sheet1(定义为With … End With语句中的.Parent ),则分配将失败, Run-tim error '1004': Application-defined or object-defined error 解决scheme:使用.Cells不是Cells 。 案件结案。 但… 是的. 当Range.Cells属性inheritanceWith … End With语句中定义的.Parent工作表属性时,在此Range对象定义中是否必要? 这怎么可能, dim rng as range with […]
我正在尝试编写一个macros,将第1列中的第1列的内容复制到第2列中的第2列。这就是模块的外观,但是当我运行它时, 运行时错误9,下标超出范围。 Sub OneCell() Sheets("Sheet1").Select 'select column 1 A1' Range("A1:A3").Select Selection.Copy Range("B1:B3").Select ActiveSheet.Paste Sheets("Sheet2").Select Application.CutCopyMode = False End Sub
我有单元格A1:A1000中的数据。 这是一个名字后面跟着一个小logging,如下所示: 山姆“快 尼克“长 汤姆“快 他们都在名字后面有一个空格,然后是空格,我想要做的是删除名字后面的所有内容。 我正在玩macros,尝试这样做,但没有得到任何工作。 任何想法我可以做这个?
看看这个属性(鉴于你在第一张工作表上有一个表格): Application.Sheets(1).ListObjects(1).name 这个属性可以包含多less个字符? 那么,在testing了几个string之后,我得出结论:255,超过255个字符的任何string都会导致错误: 运行时错误5 – 无效的过程调用或参数 看看这个属性: Application.Sheets(1).ListObjects(1).Summary 这个属性可以包含多less个字符? 同样,testing几个string,你会得到一个大约50,000的数字,你把它设置得更高,你会得到相同的错误,除非在这种情况下,Excel有时会崩溃或吐出一个不同的错误(多次尝试后): Dim i As Integer Dim a As String For i = 1 To 5001 a = a & "abcdefghih" Next i Application.Sheets(1).ListObjects(1).Summary = a 对象'ListObject'的方法“摘要”失败 这种“隐藏的”字符限制出现在 这里 ( 在这里 , 这里 可能不太具体 ),并且它看起来不像他们在任何地方被logging,例如看看ListObject.Name的页面,没有注意到你可以在这个variables中存储多less个字符… 那么有没有更好的方法来确定呢? 您在属性中设置的string是否存储在固定长度的string中,这些string可以被访问以确定它们的最大长度是什么,或者是否有一些其他forms的文档可以用来获取这些信息? 这让我觉得奇怪的是,这些字符限制是在标准VBA对象中的大部分string上设置的,我不知道它们的目的是什么,为什么devise者select将“ListObjects.name”限制为255个字符,以及这是一个任意的默认限制还是那是一个有意识的决定。 我相信标准string的长度是这个 ,我不知道为什么偏离这个标准。 总结我上面提到的几点,把这个问题压缩成一句话: 是否有一种通用的方法来确定可以在对象的属性中设置的string的最大长度,而不是通过给它另一个值并忽略错误/检查字符截断来首先testing该string的属性?
我创build了一个在一段时间不活动后closuresWB的macros。 如果我手动打开文件,它是完美的,但如果我使用另一个WB中的另一个macros来打开文件,在设置的非活动时间后它不会自动closures。 我用来自动closures它的代码是: 此工作簿模块: Private Sub Workbook_BeforeClose(Cancel As Boolean) stop_Countdown ThisWorkbook.Save End Sub Private Sub Workbook_Open() start_Countdown End Sub Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) stop_Countdown start_Countdown End Sub Private Sub Workbook_SheetCalculate(ByVal Sh As Object) stop_Countdown start_Countdown End Sub Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _ ByVal Target As Excel.Range) stop_Countdown […]