Questions tagged «vba»

Visual Basic应用程序;所有Microsoft Office应用程序中使用的Visual Basic的子集。考虑将该标签与该特定应用程序的标签一起使用。关于VBA的好问题通常包含一些代码,并要求解决特定问题。要求完整解决方案的问题(请给我代码/如何使用VBA做到这一点)不在主题之内,将因为过于广泛而封闭。

1
Excel 2010 VBA on-start宏执行 - 错误
我一直在尝试创建一个宏,每次打开文档时都要执行。我试图使用Open事件,但它似乎没有工作。代码如下: Private Sub Workbook_Open() Cells(3, 1) = "WOWWW" End Sub (这可能看起来很荒谬,但我正在努力使任何代码块工作,以进一步使用启动时宏)。 每次打开文件时,单元格( A3 )似乎没有改变。有什么想法吗? 我不知道是否重要,但我不直接打开文件。我通过打开Excel程序然后打开它 File Tab - > Open - > File。那是因为如果我直接打开文件就会出现问题,这是另一回事。

1
将单元格中的单位和值转换为标准单位
我必须解释科学报告的数据。我们以相同的单位报告所有数据。但是,实验室以不同的单位发送数据。例如,实验室可能会以ug(微克)发送结果,我们需要将其转换为mg(毫克)。因此,我想知道如何制作一个可以应用于列或行的宏来转换结果(即将结果数除以1000)。 我遇到的问题是数据通常是混合的,同一列中的不同单位。因此,宏只需要应用于具有不正确单位的结果(即,只有已经在ug中的结果需要转换为mg)。 由于我的数据通常包含数千行,因此它确实需要是一个宏,以便我可以突出显示一行并运行宏。然后,它将用修改后的数字替换“报告结果”单元格的内容,并使用更正后的单位更新“结果单位”单元格。 我收到的数据示例如下: 如果有人有任何想法,我会非常感激。

1
当标准不匹配时,不要做任何excel vba宏
我正在实现一个宏,它检查E列是否与当前日期相差7天。 If cell date - current date = 7 然后将包含具有匹配单元格的行的电子邮件发送到电子邮件地址以进行通知。 这是我的编码,它成功运作,除了一个问题。 Sub Workbook_Open() Dim rngStart As Range Dim rngEnd As Range Dim rngCell As Range Dim strHtmlHead As String Dim strHtmlFoot As String Dim strMsgBody As String Dim strMsg As String Dim objEmail As Object Dim OutlookApp As Object Dim …

1
单行VBA代码,包括多个范围
我是否必须将每个单元格范围放在单独的行中,就像这样 Range("A6:B" & Cells.SpecialCells(xlCellTypeLastCell).Row).HorizontalAlignment = xlLeft Range("G6:H" & Cells.SpecialCells(xlCellTypeLastCell).Row).HorizontalAlignment = xlLeft 或者我可以以某种方式包括在一行中彼此不相邻的列组(从某些单元格一直向下)?以下代码似乎对我不起作用。 Range("A6:B,G6:H" & Cells.SpecialCells(xlCellTypeLastCell).Row).HorizontalAlignment = xlLeft

2
计算日期范围列表中日期的出现次数[重复]
这个问题在这里已有答案: 通过考虑日期范围[关闭] 1个答案 我有一个Excel 2010表,列出事件,提供有关事件的详细信息以及每个事件的开始和结束日期。这些事件发生在一年之内。我需要创建一个包含该时间跨度内所有日期的列表(已经完成)并获取每天在该日期发生的事件数量的计数。即2017年6月4日,有3个活动。所以我的原始列表将如下所示: Event ID Event Name Start Date End Date A12411 Event One June 1, 2017 June 10, 2017 A45721 Event Two June 1, 2017 June 5, 2017 A84541 Event Three June 2, 2017 June 4, 2017 等等... 从上面的数据,我希望我的列表显示: Date Number of events June 1, 2017 2 …

2
如何在Excel 2003中加速我的宏?
我有一个宏,将数据从一个单元格复制到另一个单元格并使用 VLOOKUP 除其他外,公式。我的电子表格包含近2000行。 当我在Excel 2003中运行它时,Excel开始减速,因为宏处理行500及以上。当它到达第1000行时会变得更糟。完成需要5个多小时。 但是,在Excel 2007中,宏只运行了半个小时。 谁能帮我找到一个好的解决方案?

1
什么是合适的形状名称,因为我的例程没有说?
我在网上找到了以下例程: http://www.ozgrid.com/forum/showthread.php?t=77662 这个例程不起作用因为我不知道形状名称。任何人都可以告诉我一个矩形框的形状名称是什么? Function SetShapeText(s As String, sShpName As String) s = "some text" Dim i As Integer ActiveSheet.Shapes(sShpName).Select With Selection .Text = "" For i = 0 To Int(Len(s) / 255) .Characters(.Characters.Count + 1).Text = Mid(s, 255 * i + 1, 255) Next End With End Function 它出错在这一行:ActiveSheet.Shapes(sShpName).Select


1
EXCEL VBA获取Const文件夹
我有一个代码“copyMultFiles”将许多文件中的许多值移动到单个文件 我的问题是不能在“Const”中使用参数 错误此行“Const csMyPath As String = vaFiles1” vaFiles1是获取源文件夹我无法在csMypath中输入 'get source folder Dim diaFolder As FileDialog Dim vaFiles1 As String ' Open the file dialog Set diaFolder = Application.FileDialog(msoFileDialogFolderPicker) diaFolder.AllowMultiSelect = False diaFolder.Show 'MsgBox diaFolder.SelectedItems(1) vaFiles1 = diaFolder.SelectedItems(1) ' change these to suit requirements Const csMyPath As String = vaFiles1 …

1
如何使命名单元格成为只读
我想将一个单元格“Cell Name”设为只读。 我在这里找到了这段代码,但不知道如何使用String值而不是范围: Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Selection, Range("A1:A4")) Is Nothing Then Range("B1").Select End If End Sub 如何调整此代码以满足我的需求?

1
创建宏或公式以通过查询复制数据
这是我希望建立的公式: = IFERROR(VLOOKUP($ A1,Table2,10,FALSE), “”) 我不知道我是否只能使用一个公式或者它是否必须是一个宏。我正在尝试创建列表中一列的查询。该查询将针对A列中的ID。此查询将针对同一工作簿中的另一个工作表完成。 ( 表格1 和 表2 ) 如果第一个工作表的ID与另一个工作表中的ID匹配,它将从中复制数据 专栏J. 的 表格1 至 专栏J. 的 表2 。 此公式中只使用两列。 A栏 包含初始查找的ID 第J栏 包含需要复制的数据 我的公式已经有效但我需要它实际上将值复制到 专栏J. 而不仅仅是引用。如果我需要更好/更多解释,我会非常乐意这样做。

1
基于输入框日期的过滤器不起作用
我想输入开始日期和结束日期,并让VBA过滤所选日期之间的Excel表格中的数据条目。但是,此代码返回零过滤条目。如果我手动使用Excel中的过滤器,我发现它已正确配置(日期放在过滤条件框中)。如果我然后单击确定按钮它会过滤。知道我犯了什么错误吗? 附:假设输入框值是正确格式化的日期 Option Explicit Sub ExpCsmLg() ' ExpCsmLg Makro ' this makro filters all data entries between two selected dates Dim sdt As Date Dim edt As Date 'sdt = InputBox("Choose Start date.") 'edt = InputBox("Choose End date.") ActiveSheet.Range("$A$5:$Q$7992").AutoFilter Field:=1, Criteria1:=">=" & sdt, Operator:=xlAnd, Criteria2:="<=" & edt End Sub

1
如何在不保存的情况下关闭Excel时回滚另一个文件?
我有一个带有宏的Excel电子表格,它将一些单元格值写入文本文件。当任何这些单元格值更改时,将触发宏并更新文本输出。 但是,如果用户随后决定关闭电子表格而不保存更改,则不会触发宏,并且文本输出不会更新到更改之前的状态。 澄清问题的一个简单例子: 说单元格B3持有字符串“Beer” 然后用户将此单元格编辑为“Wine” 宏检测到更改并将文本文件更新为“Wine” 如果用户然后关闭Excel而不保存更改,单元格B3显然会变回“啤酒”( 但是,由于Excel正在关闭,因此仅在下次打开电子表格时才可见 ) ...但文本文件继续显示“Wine”,因为关闭Excel而不保存显然不会导致任何可用于触发宏的更改事件。甚至从Workbook_BeforeClose或Workbook_Deactivate事件调用宏也不会将“Wine”的文本输出刷新回“Beer” 有什么建议我如何回滚文本输出?

2
试图生成唯一的发票号码
我正在为我的公司制作一份“工作现场”工作簿。它最终将处理在工作结束时要上交的所有文书工作。我们给出的旧发票只是将发票总额用作“票号”,但有时会导致重复的票号。 所以我所做的是使用VBA使用以下代码提取客户名称中每个单词的第一个字母: Function GetFirstLetters(rng As Range) As String Dim arr Dim I As Long arr = VBA.Split(rng, " ") If IsArray(arr) Then For I = LBound(arr) To UBound(arr) GetFirstLetters = GetFirstLetters & Left(arr(I), 1) Next I Else GetFirstLetters = Left(arr, 1) End If End Function 并贴在发票总额的开头。然而,结果给我留下了小数和剩余的变化,我想省略。 我还没有找到一种方法来删除小数位,我甚至不确定现在单元格是否包含单词和值组合,但我认为这将是一个要问的地方。 任何帮助将不胜感激

1
VBA-代码执行并产生所需的效果,但随后在Exportasfixedformat行上产生错误
我有一个宏用于导出所有工作表以在指定的子文件夹中分隔pdf。当我执行它时,在正确的位置生成pdfs并且标题为apporproately但是然后出错 - 错误5无效的过程调用或参数 - 任何想法? Sub SaveWorkshetAsPDF() Application.ScreenUpdating = False Dim ws As Worksheet Dim path As String Dim fol As String Dim name As String Dim concat As String Dim fdObj As Object path = ActiveWorkbook.path fol = "\PDFs\" Set fdObj = CreateObject("Scripting.FileSystemObject") If fdObj.FolderExists(path & fol) Then MsgBox …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.