Tag: excel vba

如何使用VBA添加自定义function区选项卡?

我正在寻找一种方法来添加一个自定义选项卡的Excelfunction区,将带有几个button。 我偶然发现了一些通过Google解决问题的资源,但都显得有些狡猾,而且非常复杂。 什么是快速简单的方法来做到这一点? 我希望当我的VBA被加载到Excel中时,新的选项卡被加载。 更新 :我从这里尝试这个例子,但最后的指令得到一个“对象所需”的错误: Public Sub AddHighlightRibbon() Dim ribbonXml As String ribbonXml = "<mso:customUI xmlns:mso=""http://schemas.microsoft.com/office/2009/07/customui"">" ribbonXml = ribbonXml + " <mso:ribbon>" ribbonXml = ribbonXml + " <mso:qat/>" ribbonXml = ribbonXml + " <mso:tabs>" ribbonXml = ribbonXml + " <mso:tab id=""highlightTab"" label=""Highlight"" insertBeforeQ=""mso:TabFormat"">" ribbonXml = ribbonXml + " <mso:group id=""testGroup"" label=""Test"" autoScale=""true"">" ribbonXml = […]

最后一行不是空行; Excel VBA

我有一个Excel工作表,我需要find特定列中的最后一个非空单元格 。 我如何做到这一点? 下面将为我select这个,但它会select第一个不是空的单元格,我需要在行中的最后一个不空的单元格。 Worksheets("DTCs").Range("A29").End(xlToRight).Select

是个 。 在.Cells中定义时需要。

人们普遍认为这不是“最佳做法”。 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 […]

2范围内的维数组

我在Excel工作表中的单元格B6:H14有文本数据。 一些行将有2个单元格的内容,而其他有4个,一些将有7个。我怎么复制这些2维数组? 我已经知道尺寸,所以我没有声明dynamic代码的尺寸。 我需要使用一个循环(我目前正在计划使用)? 还是有更简单/更优雅的方式?

在VBA中逐行读取/parsing文本文件

我试图用VBAparsing文本文件,并返回文本文件中给出的path。 例如,文本文件如下所示: *Blah blah instructions *Blah blah instructions on line 2 G:\\Folder\…\data.xls D:\\AnotherFolder\…\moredata.xls 我希望VBA一次加载1行,如果它以*开始,然后移动到下一行(类似于被注释的行)。 对于具有文件path的行,我想把这个path写入单元格,比如A2表示第一个path, B2表示下一个,等等。 我希望能够回答的主要问题是: 1.使用VBA读取文本文件的最佳/简单方法是什么? 2.我该怎么做,一行一行?

如何以编程方式添加参考

我写了一个程序,运行和信息Skype消息,如果完成。 我需要为Skype4COM.dll添加一个参考,以便通过Skype发送消息。 我们有十几台networking上的计算机和共享的文件服务器(等等)。 所有其他电脑都需要能够运行这个程序。 我希望避免手工设置参考。 我曾计划把这个引用放在一个共享的位置,并在程序运行时以编程方式添加它。 我似乎无法弄清楚如何使用VBA以编程方式向Excel 2007添加引用。 我知道如何手动:打开VBE –> Tools –> References –> browse –_> File Location and Name 。 但是这对我的目的不是很有用。 我知道在Access Vb.net中有办法做到这一点 ,类似这样的代码不断popup,但我不知道我理解它,或者如果是相关的: ThisWorkbook.VBProject.References.AddFromGuid _ GUID:="{0002E157-0000-0000-C000-000000000046}", _ Major:=5, Minor:=3 到目前为止,在提出的解决scheme中,为了以编程方式添加引用,我们需要手动添加引用并更改信任中心 – 这不仅仅是添加引用。 虽然我猜如果我遵循提出的解决scheme,我将能够以编程方式添加未来的参考。 这可能是值得的。 任何进一步的想法将是伟大的。

testing或检查是否存在表单

Dim wkbkdestination As Workbook Dim destsheet As Worksheet For Each ThisWorkSheet In wkbkorigin.Worksheets 'this throws subscript out of range if there is not a sheet in the destination 'workbook that has the same name as the current sheet in the origin workbook. Set destsheet = wkbkdestination.Worksheets(ThisWorkSheet.Name) Next 基本上,我遍历原始工作簿中的所有工作表,然后将目标工作簿中的目标工作表设置为与原工作簿中当前迭代工作簿具有相同名称的工作表。 我如何testing该表是否存在? 就像是: If wkbkdestination.Worksheets(ThisWorkSheet.Name) Then

如何使用VBA从Excel发送HTTP POST请求到服务器?

从Excel电子表格执行HTTP POST需要哪些VBA代码?

在VBA的文本框中格式化MM / DD / YYYYdate

我正在寻找一种方法来自动将VBA文本框中的date格式化为MM / DD / YYYY格式,并且我希望格式化为用户input的格式。例如,一旦用户input第二个号码,程序会自动input“/”。 现在,我用下面的代码得到了这个工作(以及第二个短划线): Private Sub txtBoxBDayHim_Change() If txtBoxBDayHim.TextLength = 2 or txtBoxBDayHim.TextLength = 5 then txtBoxBDayHim.Text = txtBoxBDayHim.Text + "/" End Sub 现在,这在打字时效果很好。 然而,当试图删除时,它仍然input破折号,所以用户不可能删除过去的一个破折号(删除破折号导致长度为2或5,然后再次运行该子,join另一个破折号)。 任何build议更好的方式来做到这一点?

如何在VBA中使用FileSystemObject?

有什么我需要参考? 我如何使用这个: Dim fso As New FileSystemObject Dim fld As Folder Dim ts As TextStream 我收到一个错误,因为它不能识别这些对象。