如何使用下拉数据验证列表根据单元格的值隐藏Excel文档中的各种Excel工作表? 我尝试右击工作表并选择“查看代码”,然后将以下代码粘贴到弹出的Microsoft Visual Basic for Applications窗口中: Private Sub Worksheet_Change(ByVal Target As Range)
If [G1] = "Blue" Then
Sheets("Sheet3").Visible = False
Else
Sheets("Sheet3").Visible = True
End If
End Sub
我对VBA相当陌生,我想寻求一些建议。
我正在运行一个宏来将表编译成逐行事务列表。
但是,我不想为不同的月份列复制此代码11次。
我如何执行一个循环,以便它能够在所有12个月内自动执行任务?
下面的代码和表转换按照附件图片。
谢谢!
'For Apr'20 - 'Copy name and category to clipboard
Sheets("Sheet2").Range("A3:C15").Copy
'Select last row of reference cell
lastRow
我需要在vba中为多个excel工作表设置密码。我有一个excel文档,其中包含不同公司部门的工作表。我希望当我打开excel文档时,只显示起始页,然后当我输入密码时,如果它是正确的,那么只打开该部分的两个工作表。思路是:打开excel文档,显示起始页。如果密码为section1或第2部分,请输入6个部分之一的密码...或者第4部分是正确的,则显示属于我们输入密码的部分的两张纸。如果section5或第6部分的密码正确,则显示所有工作表。我先试着用下面的代码锁定一个工作表:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
我已经从XMLS中提取了bin文件,其中的代码在此工作簿中,因为我需要在打开文件时运行宏。我无法使用以下代码创建在打开时执行代码的XLSM :创建的XLSM具有" Thisworkbook“和"Thisworkbook1”,并且代码在打开时不运行 import xlsxwriter
strn =" Feb "
## Region Level
Loc = Location.reset_index()
for n, g in Matrix.groupby('Cluster'):
out_path = "D:/Action
我想运行一个从XLS文件中读取所有工作表名称的宏,然后能够从run Command运行该宏。这怎么可能呢?目前,我有以下代码,但我想将其推广到其他文件中(基本上将文件名作为此宏和命令中的参数输入)。
Sub FnGetSheetsName()
Dim mainworkBook As Workbook
Set mainworkBook = ActiveWorkbook
For i = 1 To mainworkBook.Sheets.Count
'Either we can put all names in an array , here we a
我在excel中创建了一个具有搜索功能的宏。所以基本上。我将把服务器列表放在Sheet3列A中,它将搜索使用Sheet1列A的服务器。一旦完成,它将在第2栏A中显示结果。然而,我在搜索通配符时有问题。例如。我想要搜索服务器"ABC123“,但它不会显示结果,因为它需要服务器的全名”not 123.def“,有人能帮我处理代码吗?
Option Explicit
Sub HostNameFinder()
Dim srchLen, hName, nxtRw As String
Dim g As Range
'Clear Sheet 2 and Copy Column Hea
我有以下代码,但它并没有达到我想要的程度:
Public Sub populateFile()
Dim wbk As Workbook
Dim fileName As String
Dim path As String
Dim pulledFormula As String
Dim pulledPath As String
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
Application.Calculation = xlCalcu
我经常从业务伙伴那里收到工作簿。它们都使用相同的模板。我想做的是拉入合作伙伴名称(总是在相同的单元格中) L1和月份的“Totals:”(列B),它们始终保留在同一列(CR列)中,但可能会根据总和的行项数量来更改行。正如您可以想象的那样,手动查找此信息并将其转录到另一个工作簿以获取上个月活动的摘要是单调乏味的,而且容易出错。
我在excelvbaisfun.com上找到的一些代码是为组合多个文件而设计的,但似乎是用于格式良好的数据。
我以前从来没有写过VBA,所以欢迎大家的帮助。
Sub getDataFromWbs()
Dim wb As Workbook, ws As Worksheet
这是我的的后续。我成功地在不同的驱动器上打开了不同的工作簿,将数据复制成图片,然后粘贴到ThisWorkbook.The中,我现在遇到的问题是,我使用的.CopyPicture是在计算单元格值时捕获的,因此它看起来像一堆#N/A Requesting Data...值。
在复制公式之前,我使用了几种不同的方法来查看是否能够得到计算公式,但似乎电子表格在宏不再运行之前不会继续进行计算。
我检查了,但不完全确定如何实现if Application.CalculationState is xLdone then loop else wait。对此有什么帮助吗?
原始守则:
Dim BBPic As
我是VBA的新手。我已经写了一个代码来删除一个特定的工作表。执行该删除工作表宏后,excel宏将停止执行。它没有执行得更远。
这是我的密码。
Sub CopyAcross()
Dim sheetName As String
sheetName = "Master_Base"
If WorksheetExists(sheetName) Then
DeleteSheet (sheetName)
End If
MsgBox "Debug"
Workbooks("Master_Base.csv").Sheets("Master_Base
我已经编写了下面的代码,它的工作原理是预期的。但是我可能会让它更高效,我相信我已经避免使用"select",但是还有什么是我应该尽量避免的吗?
这个宏需要几秒钟才能运行,有什么方法可以让它更快吗?当我运行它时,屏幕“闪烁”相当多,有什么我可以做的吗?这个文件很大,所以可能会引入一些停止计算的东西?
Sub ActivateUser(User As String)
Call LoadVariables
Call UnProtectSheet("Master")
LoadedUser = User
Dim
我在Excel中有两个Sub()函数。两者的名称不同,但代码相同。但是当尝试一起运行时,会给出一个'Application defined‘错误。我不知道问题出在哪里
下面是相同的代码
Sub GT456T()
Sheets("Sheet2").Rows("1:1").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet1").Select
Rows("11:11").Select
ActiveSheet.Paste
End Sub
我有一个模板,我需要发送给不同的人在我的公司使用。通常,他们中的一半在返回表单时会留下我需要的特定信息(尽管我发出了多次警告),所以我设置了一个VBA宏,以防止他们保存文档直到这些特定的单元格被填充。然而,现在我不能简单地自己保存模板,他们也无法将模板保存到他们的桌面上。有办法这样做吗?还是我注定了?
If Application.Sheets("Sheet1").Range("D34, E34, F34").Value = "" Then
Cancel = True
MsgBox "Please fill in the dimensio
有人能帮我做这段代码吗,我得到了一个下标的范围错误:
“创建工作表”后的行在调试器中以黄色高亮显示。
'Validation of year
If TextBox_Year.Value = Format(TextBox_Year.Value, "0000") Then
'Creating Process
'Creation of new sheet
Workbooks.Add
ActiveWorkbook.SaveAs FileName:= _
"" & Workbooks("Temperature
我已经在excel页签"ESOS“中创建了一个用于工具库存的模板,并在另一个页签中创建了用于搜索功能页签sheet2的模板。搜索工作正常,但如果我没有键入完整的单词或准确的单词作为工具名称,我将无法工作。例如:要查找钻头,我必须准确地键入单词"Drill bits“。我想知道是否有一种方法可以让VBA搜索功能搜索整个列表,即使我只输入Dri或drill。
下面是代码。
Option Compare Text
Sub searchable()
Dim erow As Long
Dim ws As Worksheet
Dim lastrow As Long
Dim count
我想访问宏所属的工作表。为此,我使用以下代码片段。有没有其他方法可以不使用这个文件的名称呢?
Workbooks("file.xlsm").Activate
Dim sheet As Worksheet
Set sheet = ActiveWorkbook.Sheets(1)
sheet.Cells(1,1).Value = "message"
提前谢谢。
我对VBA还是比较陌生的,对Application.OnTime方法也不是很有经验。我一直在查看多个资源,我找不到一种清晰的方法,可以在不打开任何工作簿的情况下每天自动运行宏(假设我首先在工作簿中运行宏)。
这个是可能的吗?我希望效率更高,而不是每天早上都运行多个宏。
如果您需要更多信息,请让我知道,但我的代码只是一个复制/粘贴过程:
Sub MyMacro()
Application.ScreenUpdating = False
Dim OH As Workbook
Dim PO As Workbook
Set OH = Workbooks.Open("filepath"
我每天早上的第一项任务是抓取由另一个部门生成的两个文件。然后,我基本上是“移动”文件中的信息,以准备电子邮件。必须做的一件事是添加新的工作表,在其中我能够编写宏for并将其添加到个人宏工作簿中。但是,我遇到的问题是,每当添加新工作表时,宏都会将它们添加到个人宏工作簿中,而不是每天早上打开的文件中,并需要添加到其中。
我相信这部分是在代码(下面)中添加了表单,但是我不知道该用什么来代替它。有人能帮忙吗?谢谢
ThisWorkbook.Sheets.Add.Name = "PAV" ' This adds three new sheets
ThisWorkboo
我有多达6个单元格,它们的潜在数据来自6个不同的地方。我尝试只将前三个单元格的数据传输到另一个具有原始SHEET1颜色但不是格式的工作表中 Sub Transfer_Data()
Dim i As Long, j As Long
j = 1
For i = 1 To 6
If Sheets("Sheet1").Cells(i, 1).Value <> "" Then
Sheets("Sheet2").Cells(j, 1).Value = Sheets("Sheet1").Cells
我正在编写一个脚本来为大量的单元格编写数组公式。我有一个能工作的代码,但是非常慢。对如何加快速度有什么想法吗?最终目标是能够快速地将数组公式写入多个单元格。问题是每个单元格都有一个独特的公式。所以我想不出一种简化代码的方法。下面是现在编写的代码:
Sub make_sheet()
Dim m As Integer
Dim h As Integer
Dim a As Integer
Dim b As Integer
Dim dt As String
Dim man As String
m = 10005
h = 2
a = 1
dt = ActiveWorkbook.Sheets("
我构建了一个宏,用于构建和运行SQL查询。到目前为止,我对此相当满意。我想添加的唯一功能是在Windows中双击.sql文件并在宏中打开它。样本如下:
这是在按下Load查询时打开SQL文件的代码。
Sub LoadQuery()
Dim fNameAndPath As Variant
fNameAndPath = Application.GetOpenFilename(FileFilter:="SQL Query Files (*.sql), *.sql", Title:="Select File To Be Opened")
我需要创建一个UserForm。它将有三个控制:
1)标签:“请注明年份”
2)TextBox:“此处用户将插入年份”
3)CommandButton:“点击后,年份将被提交”
用户插入的年份将在我的宏中使用,下面是一段代码,其中插入的年份应该用注释标记:
For i = startrow To endrow
Range("A" & i, "C" & i).Copy
Sheets("Sheet13").Range("B" & i +
下面的代码是Im writing. But the result new.xls is broken and images and text in source file hasnt it copied.The源文件的文本数据不是链接,它们只是文本values.Is,这是我不能提前用它或what?.thanks做的事情。代码概要是simple.Just复制一些工作表和编辑一些单元格,然后将其插入到另一个工作簿中。
def extract_xls():
f=open('extract_sample.txt', 'r', encoding='shift_ji
我将下面的代码链接到sheet1上的一个按钮上,它的设计目的是复制Sheet3的内容,从第3行到数据的末尾。如果我手动运行代码,而我的活动工作表在工作簿中的任何其他地方,它可以正确运行并复制和粘贴大约1200行,但是如果我从sheet1上的按钮运行,或者当Sheet1是我的活动工作表时手动运行,它只复制和粘贴30行。有什么线索吗? Dim LastRow As Long
LastRow = Range("A" & Rows.Count).End(xlUp).Row
Sheets("Sheet3").Range("A3:F3" &
因此,我有一个工作簿,我想在某个日期后将其设置为只读/保护。我还想强制用户启用宏。到目前为止,我有以下脚本,但尽管将其更改为只读,它似乎没有任何作用。我也曾尝试在该日期之后启用对纸张的保护,但收到错误。有人能帮我吗?
-Eric
Private Const ExpirationDate As Date = #4/5/2099#
Private Sub Workbook_Open()
' Timebomb
If CDate(Now) >= CDate(ExpirationDate) Then
ThisWorkbook.ChangeFileAcces