Tag: vba

VBA Excelmacros将一列复制到另一个工作簿

我有2个工作簿,并试图find一种方法将wb1的列复制到wb2中。 我知道我可以复制/粘贴,但想法是做一些东西,所以我的老板可以点击macros,一切都填充。 我一直在尝试我遇到的另一个问题的代码: Sub Import() Dim sourceColumn As Range Dim destColumn As Range Set sourceColumn = Workbooks("C:\Documents and Settings\********\My Documents\*********.xlsm").Worksheets(2).Columns("BL") Set destColumn = Workbooks("C:\Documents and Settings\********\My Documents\*********.xlsm").Worksheets(2).Columns("A") sourceColumn.Copy Destination = destColumn End Sub 当我运行这个,我得到一个“下标超出范围”错误。 源列包含一个依赖于其他列的公式,而目标列是空的,但是即使当我在小数字的虚拟工作簿上运行这个时,我也得到了相同的错误。 有什么超级基础我在这里失踪?

使用Excel VBA中的单元格中的通配符调用macros

我目前在Excel中有一个combobox被分配到一个单独的工作表上有一个“macros列表”,其中列出了大约200个不同的macros。 有时候可以通过search下拉列表来获得你想要select的macros(它们是按照数字顺序排列的,所以它不是太糟糕),但是我认为这可能会更好。 大多数macros的结构是这样的“PA1111_Name” – 我想要的是允许用户在单元格中input1111,然后按下一个指向上述macros的“运行”button。 在SQL中,它会是这样的: SELECT Macro FROM Module WHERE Macro Like '*' & Cell.A2 & '*' 这些数字是独一无二的,所以我不关心抓取多个macros的可能性。 谢谢!

你可以复制一张工作表,并保留对新表的引用吗?

是否有可能使用VBA复制工作表并保存对它的引用? 我知道我可以做以下的工作,以保持对新工作表的引用,但我必须跟踪索引,似乎应该已经有内置的东西可以做到这一点。 Dim newws as Worksheet Dim oldws as Worksheet ' set oldws to whatever I need, then oldws.Copy Before:=Worksheets(1) Set newws = Worksheets(1) 但是,如果像这样可用,就像Worksheets.Add一样 ' You can do this Set newws = Worksheets.Add ' But definitely not this, because Sheets.Copy doesn't return anything. Set newws = oldws.Copy Before:=1 我想我可以写我自己的function: Function CopyAWorksheet(ws As Worksheet, Before […]

VBA代码按列名sorting多个列,不同的位置

我是新来的VBA编码,并希望一个VBA脚本sorting多列。 我首先将列F从最小到最大sorting,然后对列K进行sorting。但是,我希望范围值是基于列名而不是位置的dynamic值(即列F中的值称为“名称”,但“名字“并不总是在F列) 我正在寻找更改macros中的所有范围值,并且正在考虑用一个FIND函数来replace它,我在正确的轨道上吗? 即改变范围_(“F1:F10695”) 到像Range (Find(What:="Name", After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False).Activate Range(Selection, Selection.End(xlDown)).Select 我也看到一些使用Dim和Set函数创build列表的VBA脚本模板,即设置x =“Name”,然后在matrix中对X进行sorting。 这是一个更好的方法吗? 感谢您的帮助,我附上了下面的基本VBA脚本模板 Sub Macro2() ' ' Macro2 Macro ' ' Selection.AutoFilter Range("F1").Select ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Add Key:=Range _ ("F1:F10695"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin […]

从Excel VBA写入Word文档时,不能使用“Selection.TypeText”方法

我试图从Excel VBA写入Word文档,当我尝试在Selection对象上使用.TypeText方法时,出现错误:“对象不支持此属性或方法”。 我已经读过Excel VBA不知道我指的是Word文档中的Selection对象,所以我尝试了build议的解决scheme,即尝试在With End With块中执行此操作。 基本上我试过这个: Set WrdApp = New Word.Application Set DestDoc = WrdApp.Documents.Add With DestDoc .Activate .Select .Selection.TypeText Text:="Test" End With 但它总是报告.Selection.TypeText行上的相同的错误。 任何帮助,将不胜感激。

Excel VBA – 双击列中所有选中的单元格大写

我有一个非常简单的VBA脚本,大写所选单元格: Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) ActiveCell.Value = UCase(ActiveCell.Value) End Sub 它按预期工作,但有时我想大写选定列中的所有单元格,但只有双击列本身。 看来,我不能接收事件与Worksheet_BeforeDoubleClick时单击列字段.. 有没有一些解决方法呢?

Excel VBA:函数来计算数组的非空元素

我正在寻找一种方法来计算2维数组中的非空元素。 我已经在这里读了一个解决schemeVBA计数非空元素的数组 。 不过,我认为可能有更好的方法或function来执行它。 要计算范围(A1:J10)中的非空单元格,我们在Excel VBA中使用此单元格 k = Application.WorksheetFunction.CountA(Range(Cells(1, 1), Cells(10, 10))) 我正在寻找类似的function来计算数组中的非空元素。 例如,我试过这个 k = Application.WorksheetFunction.CountA(Array(1,1),Array(10,10)) 但它不起作用。 有这样的函数来计算数组中的非空元素吗? 我需要计算这个数字,因为当数组中相同行的所有元素都为空时,我想删除数组中的整个行。 谢谢。

为我的单元格编号并根据年份重置

这是我第一篇关于堆栈溢出和我的第一个关于编程的在线问题。 我正在开发一个程序来logging制造工厂中项目(工作订单)的请求。 由于从Windows XP切换,当前系统正在被删除。 我无法开发我的编号。 代码的格式是:YY – ######。 我目前正在使用: .Cells(iRow, 1).Value = Format(Date, "yy") & " – " & Format(iRow – 1, "000000") 所以这将input年份和“iRow” – 1到第一列。 iRow使用以下方法确定: iRow = 2 'starting index for next empty WONum cell With WORecordSheet 'Find the next empty WONum cell Do While .Cells(iRow, 1).Value <> "" .Cells(iRow, 1).Activate iRow = […]

在Excel 2010中,如何删除包含多个值单元格的单元格范围内的重复项和连接值?

我在Excel 2010中创build了一个文档,但是我希望从中获得的function似乎是不可能的(至less不能使用默认的Excel函数),而且我对VB编程还不太了解。 UDF。 (我实际上使用的是我在网上find的一部分是我想要的,但并不能满足我所有的需求。) 让我分解一下: 我有多个用户可以添加数字的字段组(一些将是空白的,一些将包含一个单一的数字,一些将包含多个逗号分隔的数字) 我有一个“概述”表,我想要连接这些数字(并删除任何重复)在几个不同的部分(只看特定的字段组)。 我发现了一个ConcatIf UDF,它可以很好地工作,但是它不能处理非连续的单元格(例如,我想连接和删除单元格D30,G30,J30和M30中的重复项)(这里是UDF 🙂 Function ConcatIf(ByVal compareRange As Range, ByVal xCriteria As Variant, Optional ByVal stringsRange As Range, _ Optional Delimiter As String, Optional NoDuplicates As Boolean) As String Dim i As Long, j As Long With compareRange.Parent Set compareRange = Application.Intersect(compareRange, Range(.UsedRange, .Range("a1"))) End With If compareRange Is […]

EXCEL VBA-将工作簿导出为受密码保护的ZIP文件

是否有修改Ron De Bruin的代码将当前工作簿导出到受密码保护的 zip文件。 我已经环顾了相当一段时间,并不知道如何启用这样的选项。 代码在这里: http : //www.rondebruin.nl/win/s7/win001.htm Sub NewZip(sPath) 'Create empty Zip File 'Changed by keepITcool Dec-12-2005 If Len(Dir(sPath)) > 0 Then Kill sPath Open sPath For Output As #1 Print #1, Chr$(80) & Chr$(75) & Chr$(5) & Chr$(6) & String(18, 0) Close #1 End Sub Sub Zip_ActiveWorkbook() Dim strDate As String, DefPath […]