所需的VBA代码:
我在一个工作簿中有两个选项卡。选项卡1 (DIST "A")是一个带格式的电子表格,而选项卡2 (RFP)有一个表,其中有一个名为"Distributor“的列。当我在“分发服务器”列表下输入名称时,可能是1个或30个不同的名称,我希望VBA自动复制Tab 1,将复制的工作表重命名为我输入的任何名称,并将其发送到工作簿的末尾。
这是我当前的代码,它复制了活动工作表,Tab 2,而不是Tab 1(我需要的)
Sub Copyrenameworksheet()
Dim ws As Worksheet
Set wh = Worksheets(Active
我有一个UDF,可以在excel工作簿中的单元格中调用。我需要它在工作簿的末尾添加一个工作表。我在VBA脚本中多次使用sheets.add,但从未在单元格内调用的函数中使用过,这显然导致了一些问题。
该函数接受一个可选参数,用于添加工作表的工作簿的文件路径,如果用户保留此空白,则默认为活动工作簿。
下面是相关代码..。我做错了什么?
Public Function onesheet(Optional filepath As String)
Dim wb As Workbook
Dim ws As Worksheet
If filepath = "" Then
Set
在一个工作表中使用一个VBA CommandButton,可以在另一个工作表中调用另一个vba模块。此VBA连接在工作表内,而不是与工作簿连接。当我在第一个工作表中运行CommandButton时,会得到以下错误。
Public Sub CommandButton3_Click()
PriceChange.FilterColorToRed
End Sub
虽然我知道如何(在VBA代码中)枚举整个工作簿中的WorkbookQuery对象,但我需要知道如何对一个工作表进行枚举。这是适用于整个工作簿的代码..。
Option Explicit
Public Sub EnumerateWorkbookQueries()
Dim q As WorkbookQuery
For Each q In ThisWorkbook.Queries
Debug.Print q.Name
Next q
End Sub
我知道WorkbookQuery对象(顾名思义)是在工作簿中收集的,但是它们返回的数据会进入特定工作表上的
在“模块”窗口中创建一个工作簿并写入宏之后,宏会被分配给一个按钮。通过单击“查看”>“保护共享工作簿”来保护工作簿将使该工作簿的整个VBA项目“不可见”,确切的错误消息是"Project is Unviewable“。此外,“条件格式”按钮是灰色的。
取消对工作簿的保护,并使用"allow changes by one or more...“选项共享工作簿。勾选不起作用。
宏仍然有效,但我希望能够解决“项目不可见”的问题。
我有vba,工作很棒,打开一个文件的基础上,部分标准满足。但是当我打开多个文件时,下面的VBA打开的文件在完成后仍然是打开的,我在如何回调该工作簿以关闭它时遇到了问题,因为它打开了部分满足的参数。简而言之,打开一个文件(打开一个文件),然后在另一个vba中复制数据,并将其粘贴到另一个工作簿中(在另一个VBA中完成)完成后,我希望将该工作簿重新启动并将其关闭。如果我执行activeworkbook.close,它将关闭我正在处理的不想要的工作簿。帮助我卡住了!
Sub OpenCopy()
Dim sPath As String
Dim sPartial As String
Dim sFName
刚开始使用VBA时,我的代码慢得让人痛苦。我在网络驱动器上有许多工作簿,每个工作簿都有几个工作表。我正在尝试使用以下代码将数据从每个工作表中的多个非连续区域提取到预先设计的工作表中:
Private Function GetValue(path, file, sheet, ref)
'retrieve value
'// code
GetValue = ExecuteExcel4Macro(arg)
End Function
Sub UpdateModel1()
sheet = "blah blah"
Applicat
我在Outlook中有一个宏,用于从打开的Excel工作簿("Workbook1")中获取数据。
我参考工作簿如下:
Dim objApp As Excel.Application
Set objApp = GetObject(, "Excel.Application")
Set wb = objApp.Workbooks("Workbook1.xlsx")
我经常得到运行时错误9,即VBA找不到工作簿。
由于我打开了多个Excel实例,所以VBA正在错误的实例中查找我的工作簿。
如何在运行多个实例时引用工作簿
我正在尝试在VBA中开发一个将结果返回到当前工作表的函数。它的目的是函数打开另一个电子表格,提取一些数据,进行一些处理,并将一个值返回到调用该函数的工作表。
当我在VBA编辑器的“即时”窗口中调用该函数时,一切都运行得很好。但是,当我将调用转移到工作表时,函数行为与尝试打开另一个工作簿(AreaBook)时的预期行为不同。对象AreaBook仍然是一个空指针。
我已经尝试过对文件名进行硬编码;同样,对该函数的调用可以在即时窗口中工作,但在从工作簿中调用时却不能。
有什么想法吗?
Public Function pointInWhichArea(FileName As String, Sheet
这里是VBA的新手。在工作中,我正在创建一个宏,它可以编译和格式化我们每月收到的报告中的数据,并且文件名会发生变化。由于名称更改了,而不是必须进入VBE并从那里更改名称,我是否可以创建一个用户表单,允许我键入工作簿的名称,它将能够将其插入到脚本中? 到目前为止,我所拥有的: Sub tester()
Dim wbName As String
wbName = Application.InputBox("What is the workbook name?")
If Right(wbName, 4) <> ".xls" Then wbName =
下面的代码完美地将数据从指定工作簿的活动工作表复制到新的未命名工作簿中。它复制第一个文件中的第一行,并将除第一行(标题)之外的其他文件中的数据与其合并。
但是,我正在学习,我想知道如何以相同的方式将数据组合到宏工作簿本身中(而不是在新工作簿中)。我打算在将数据合并到同一宏书中后进行一些宏录制。
请帮助我如何做这件事。我尝试将合并后的工作表从新工作簿(运行下面的代码后生成的工作簿)移动/复制到宏工作簿中,然后关闭新工作簿而不保存它,但到目前为止没有成功。请帮帮忙。
Option Explicit
Sub CombineDataFiles()
Dim DataBook As Workbook,
我仍然是vba的新手,我对如何将工作表复制到新的工作簿以及如何根据单元格值重命名新的工作簿有疑问。我有一个名为“摘要”的工作表,我想复制该工作表并导出到新的工作簿,但我也希望新工作簿根据单元格值命名(在本例中,我希望它根据单元格B3命名)。下面是我尝试过的代码:
Sub Sample2()
Dim wksht As Summary
Set wksht = ActiveSheet
Dim path As String
path = "C:\Desktop"
wksht.Copy
ActiveWorkbook.S
我已经搜索过了,我知道如何从VB宏调用Personal.xlsb中的函数,但是如何调用要在新的工作簿中使用的函数呢?
这是我的函数,保存在Personal.xlsb中的“Personal.xlsb”中
Public Function GetColumnLetter(colNum As Integer) As String
Dim d As Integer
Dim m As Integer
Dim name As String
d = colNum
name = ""
Do While (d > 0)
m =
我正在使用Excel 2010。
我将这段代码添加到我的工作表中,它可以正常工作。
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("A1") > 0.5 Then
MsgBox "Discount too high"
End If
End Sub
但我想创建一些方法,以便我可以创建代码,并在我们网络上的所有excel工作簿中共享这些代码。
所以我制作了一个模块,创建了一个插件,并将代码放入了插件的模块中。
我从工作表中删除了代码,因为我希望
我正在尝试将一个范围从一个工作簿复制到另一个工作簿中的表,以捕获生产数据。我能够复制正确的范围,并成功地打开工作簿与表。但是,当它试图将信息粘贴到表中的下一个可用行时,我会得到错误13。我对vba非常陌生,似乎无法找到解决方案,任何帮助都是非常感谢的。
Dim wbTime As Workbook
Set wbTime = ThisWorkbook
Dim wbData As Workbook
Dim N As Long
N = Cells(Rows.Count, "A").End(xlUp).Row + 1
Dim UsdRws As Lo
我对VBA非常陌生,我试图在工作簿中隐藏一些列。我必须在VBA中这样做,因为工作簿是Office工作簿的工作簿,所以我必须隐藏一些最终用户不需要看到的列。我的问题是,我不能指向列的特定字母,因为工作簿可以像枢轴一样修改,与打开的默认维度类似,如果我指向代码中的特定列,当用户添加新维度时,情况就不一样了。所以我必须找到这个列的名字和隐藏它。
所以现在我试了一下:
Sub Hide_Columns()
'Dim Sourcecell As Range
Dim wb As Workbook
Dim ws As Worksheet
'Set Sourcecell = Nothing
&