我在Excel VBE中使用VBA,但C#或VB是好的。 这个概念在各种语言中应该是真实的。
我正在使用具有多张工作表的Excel 2007。 我需要有工作表上次保存的date – 页脚。 我能够find以下内容: Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets With ws.PageSetup .LeftFooter = "Last Save Time: &T" .RightFooter = "Last Save Date: &D" End With Next ws Set ws = Nothing End Sub 这改变了每个工作表。 我只需要它就可以更改已编辑的工作表(因此每个工作表可以有不同的date)。 这甚至有可能吗? 我应该使用单元而不是页脚? 或者我必须创build多个工作簿? 谢谢!
我试图解决一个相对简单的问题,但我不明白这一点。 我的目标是将主Excel应用程序的工作表中的单元格范围复制到第二个新创build的Excel应用程序的工作表中另一个范围(相同大小)。 我通过使用创build第二个应用程序 Set secondExApp = CreateObject("Excel.Application") 我正在使用这个参考进一步处理。 直到现在我已经尝试了两种不同的方式。 两者都不能正常工作。 0 .:准备/介绍 Set srcWb = Application.ActiveWorkbook Set srcSheet = srcWb.Worksheets("example") Set dstApp = CreateObject("Excel.Application") Set dstWb = dstApp.Workbooks(1) Set dstSheet = dstWb.Worksheets(1) 1:PasteSpecial – 提供一个图像(!),而不仅仅是范围 srcSheet.Range("A1:B2").Copy dstSheet.Range("A1:B2").PasteSpecial xlPasteAll 2 .: Range.Copy [目的地] – 不起作用 – 是否正确,我只能在相同的应用程序中使用这种方法? srcSheet.Range(srcSheet.Cells(…, …), srcSheet.Cells(…, …)).Copy _ dstSheet.Range(dstSheet.Cells(…, …), dstSheet.Cells(…, …)) […]
我正在处理一个有两列的电子表格,其中一列是一次。 我已经把数据加载到字典中,把时间当作关键字。 我想查找对应于特定时间(简单)的数据,然后获取下一个数据点,以便我可以比较它们的值。 数据被logging,使得在大约两个小时的时段内每秒产生一个数据。 我的问题是,Excel中的VBA有一个function,可以自动添加一秒钟? 还是我需要手动写一个? 更新:除了下面的答案,我还发现“DateAdd”函数有用 – 我怀疑这取决于正在使用的Excel版本。
我知道甚至私人的vba脚本也可以被用户调用,使得“私有”实际上只隐藏它的名字。 但是,是否有设置macros的方法,因此只有在特定的VBA项目中才能运行? 不是从Excel而是从任何VBScript或类似的。
我有最奇怪的问题。 我有一天在笔记本电脑上写下了下面的代码,工作正常。 现在,我正在testing它在我的桌面上,它停止工作。 首先,这是我的代码 Dim oApp As Application Dim oWb As Workbook Set oApp = New Application oApp.Visible = True Set oWb = oApp.Workbooks.Open(Filename:="C:\myFile.xlsx", ReadOnly:=True) debug.print oWb.name 'returns "SOLVER.XLAM" ' "SOLVER.XLAM" is not "myFile.xlsx' debug.print oApp.Workbooks.Count 'returns 1 debug.print oApp.Workbooks(1).name 'returns "myFile.xlsx" 现在,我知道求解器是一个插件,并在创build它时被加载到新的应用程序中,但是它如何执行这个开关? 我仍然可以得到正确的文件,但我不想冒险的巧合,我的应用程序对象中只有一个文件(或第一个文件是我加载的) 附加信息 我打算在Excel实例中执行这个macros,我希望打开一个单独的Excel实例,然后在另一个实例中打开特定的工作簿( "C:\myFile.xlsx" )。 我遇到的关键问题是,当我打开另一个实例,然后添加工作簿,并将其设置为我的oWbvariables…不知何故,当我后来调用该oWbvariables它指的是不同于我已经设置它至。 'This is how it makes me […]
我有一些乱码(或者不是乱码,但是非英文字符,比如带有斯堪的纳维亚口音的A等),我需要从大约8万个条目中揪出来。 我可以写一个公式来提取和标记任何除了以外的任何单元格 ABCDEFGHIJKLMNOPQRSTUVWXYZ?
我知道我可以在VBA中使用条件编译来区分64位和32位版本(使用#If VBA7 Then … )。 是否还有一个类似于Application.Version常量,以便在编译时区分Excel 2013/2010/2007 / …等等? 另外,是否有一个可用的现有编译器常量列表? 到目前为止,我发现VBA7和Win64 (例如从这篇文章) – 但还有其他的?
我在Excel中有一些非常大的数据集,我需要parsing – 在数组中执行比在工作表中循环数据更快。 将所有数据加载到数组中导致内存问题(数据集ARE很大),所以我打算将数据的子集加载到数组中,处理该数据,然后加载另一个子集。 我希望使用定义LBound和UBound的数组“function”来帮助我跟踪工作表中的位置。 但是我发现将工作表值分配给数组会改变界限。 下面的代码演示了这个问题… Sub myTest3() Dim myRange As Range Dim myArray As Variant Dim myOffset As Long myOffset = 10 Set myRange = Worksheets("RawData").Range("A1").CurrentRegion ReDim myArray(myOffset To myRange.Rows.Count, myRange.Columns.Count) MsgBox LBound(myArray, 1) & " to " & UBound(myArray) Set myRange = myRange.Offset(myOffset, 0).Resize(myRange.Rows.Count – myOffset, myRange.Columns.Count) myArray = myRange.Value2 MsgBox LBound(myArray, […]
我在VBA编程。 我想使用ActiveSheet对象的hyperlink.add方法创build超hyperlink.add ,但它不起作用。 这是我的代码: 'set the link Dim mainsheet As Worksheet Dim ws As Worksheet Set mainsheet = ActiveWorkbook.Sheets("Main") Set ws = ActiveWorkbook.Sheets(rowNumb + 2) mainsheet.Hyperlinks.Add Anchor:=mainsheet.Range(rowTablecontent + rowNumb, colTablecontent + 3), _ Address:="", _ SubAddress:=ws.Name & "!A1", _ TextToDisplay:="Link" 代码说明: 我有一个Mainsheet,其上有一个目录和一个用于启动macros的button。 当启动macros时,程序会导入4个文件(每个文件有一个表格,并且在主工作簿中等于一张表格),这4个文件的信息大概有500张表格,现在我想要有一个目录,为每张表单上的一个链接。 variables: rowTablecontent – >内容表顶部的行 colTablecontent – >内容表左侧的列 rowNumb – >input文件上的Rowcounter 我在另一个程序中使用了相同的代码,在那里工作,所以我不知道我做错了什么。 有谁知道什么可能是错的? […]