我正在尝试使用VBA更改单元格的字体颜色。我不能在excel中直接更改它的原因是因为工作表是受保护的,而我没有密码。我想要更改的单元格未被阻止(我可以在其中键入)。
在工作表代码中,我尝试使用更改颜色,但当它要激活代码时,总是弹出错误1004。
Private Sub Worksheet_Change(ByVal Target as Range)
Range("B25").Font.Color = vbWhite
End Sub
我想让代码正常工作,这样无论键入什么内容,单元格字体都是白色的
我正在microsoft excel上构建一个工作表,它将处理合理的业务数据。工作表将被放置在USB驱动器上,并且必须不断地从一个地方移动到另一个地方。因此,我在excel VBA中创建了一个功能来启用/禁用密码保护。下面是它的工作原理。
名为xlVeryHidden的页面是在一个单元格中包含用户密码的设置,页面中的另一个单元格包含单词yes或no。密码保护是否激活取决于天气。当用户第一次打开工作簿时,除了包含要继续的按钮之外,所有的工作表都是xlVeryHidden的,他们单击运行宏的按钮来检查设置工作表中的天气。根据so,系统会提示他们登录或取消隐藏所有工作表。
登录代码如下:
If Pa
我是Excel VBA的初学者,正在工作中使用一个小工具。我们使用一个工具来衡量我们的NPS-score,因此我可以下载我们所有的评论作为CSV文件。我创建了一个VBA,将所有这些注释粘贴到一个工作表中,并将其转换为列并进行计算。
如果我首先打开我的Excel文件,然后下载注释,手动复制注释并运行脚本,它会工作得很好。但是如果我首先下载注释,然后打开我的Excel文件并运行脚本,它会抛出一个1004错误,类工作表的方法粘贴失败。
我在这里尝试了很多答案,但似乎都不起作用。这是脚本开头粘贴注释的部分:
Application.ScreenUpdating = False
Dim wb As Wo
我在一个工作簿上有以下代码。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim ws As Worksheet
For Each ws In Worksheets
If ws.Name <> "Main Page" Then
ws.Visible = xlSheetHidden
End If
Next ws
ThisWorkbook.Save
End Sub
但是,当工作簿下一次打开时,在结束时保持打开状态的页仍然是打开的。我还没有任何其他的宏或vba脚本将页面设置为
我当前使用的VBA代码是:
Sub PasswordPointage()
Dim Password As String
Do Until Password = "123"
Password = InputBox("plz enter password","Password","")
If Password = "" Then
Exit Sub
End If
Loop
我有一个包装Excel.Shape的类。
在我的一个函数(允许将形状从一个工作表移动到另一个工作表)中,我有以下代码:
Private Property ThisShape As Excel.Shape
Public Property Sheet As Excel.Worksheet Implements IShapeWrapper.Sheet
Get
If Not Me.HasShape Then Return Nothing
Return Me._Sheet
End Get
Set(value As Excel.Worksheet)
我有一个带密码保护(防止未经授权访问宏)的VBA宏,它可以按预期运行。用户单击按钮,宏将运行。内容或多或少如下:
Sub sample()
ActiveSheet.Unprotect Password:="xyz"
...VBA code....etc
ActiveSheet.Protect Password:="xyz", DrawingObjects:=True, Contents:=True, cenarios:=True
End Sub
现在我已经添加了一个函数,因此代码如下所示:
Function
.....
我在Excel中使用的工作簿有一些受保护的单元格。我无法解锁它们。我需要将数据从一个被锁定的列传输到另一个也被锁定的列。我可以手动输入数据,但是工作簿将不允许我在受保护的列中复制/粘贴数据(无论是使用VBA还是正常方式)。下面是我尝试过的代码示例,没有任何结果。
如果不打开工作簿,这甚至是可能的吗?
示例1:
Sub Requote()
Dim JDsheet As Worksheet
Set JDsheet = ActiveWorkbook.ActiveSheet
JDsheet.Range("Q26:R41").Copy JDsheet.Range("S26:T
我需要保护我的枢轴表,它也使用切片机。
我使用了下面的代码来解除对工作表的保护,刷新透视表,然后再进行保护。我相信我已经添加了我需要的所有标准,以便能够仍然使用切片机,但事实并非如此。我遗漏了什么?
Sub RefreshPivotTable()
'
' RefreshPivotTable Macro
'
Dim DashboardSheet As Worksheet
Set DashboardSheet = ThisWorkbook.Sheets("Dashboard")
DashboardSheet.Unprotect
我正在尝试通过VBA打开Excel (xlsm)文件。它可能使用(已知的)密码保护,也可能不使用。我使用的是以下代码:
On Error Resume Next
Workbooks.Open filename, Password:=user_entered_pw
opened = (Err.Number=0)
On Error Goto 0
现在,如果工作簿有密码,则可以很好地工作。但如果它没有保护,就不能打开。显然,如果还有工作簿结构保护处于活动状态,这是XL2007中的一个错误。()。在旧的XL2003上,提供密码将同时打开未保护和密码保护的文件。
我试过了:
Workbooks.Open
我使用一些VBA来切换显示和隐藏列,目前这是对连续列D:H的工作,但是我想有选择地选择它应该处理的列。
我使用的代码是:
Private Sub ShowHide_Click()
Dim xAddress As String
xAddress = "D:H"
If ShowHide.Value Then
Application.ActiveSheet.Columns(xAddress).Hidden = False
ShowHide.Caption = "Hide"
Else
Application.ActiveSheet.Columns
我收到关于VBA “运行时错误'1004':对象'_Application‘失败的方法'OnKey’”的报告,至少在Excel2016中,在此代码中是这样的:
Private Sub Workbook_Deactivate()
Application.OnKey "^x"
End Sub
(当启用VBA的工作簿处于活动状态时,代码会重写某些热键,并在用户切换回其他工作簿时恢复默认行为。)
可能是什么原因?
在VBA的帮助下,我能够创建数据透视表。但是当在工作表中添加新的行,并且我用wksSource1.PivotTables(1).RefreshTable刷新数据透视表时,它不会更新数据透视表。
Dim PCache As PivotCache
Dim PTable As PivotTable
Dim PRange As Range
Dim lastrowv As Long
Dim lastcolv As Long
lastrowv = wksSource.Cells(Rows.Count, 3).End(xlUp).Row
lastcolv = wksSource.Cells(5, Colu
我的工作簿有一些非常隐藏的工作表(xlSheetVeryHidden),因为我不希望最终用户看到这个工作表中的信息。
但是,我感到惊讶的是,使用这种方法非常薄弱,因为任何最终用户都可以从另一个工作簿运行下面的代码,并在主文件中看到所有隐藏的工作表。
Sub make_visible()
Dim wb As Workbook: Set wb = Workbooks("Test") ‘name of the main file
Dim sh As Worksheet
For Each sh In wb.Sheets
sh.Visible = xlSheetVisible
我正在编写一个VBA宏,以重置我经常使用的计算工作簿的某些区域。我的calculate宏会在运行时隐藏不相关的工作表。我希望重置宏使所有的工作表都可见。所以,我写了这段代码:
For Each ws In ActiveWorkbook.Sheets
ws.Visible = True
Next ws
但是,当我运行它时,它总是在特定的工作表上出错。确切的错误消息如下:
我做错了什么?该工作簿包含一些“图表”工作表。但是,我得到了一个标准工作表的错误。我也没有dim ws as Worksheet,因为它不能处理图表。
我正在尝试在VBA中保护Excel工作簿中的工作表(仅可见)。我希望允许用户编辑“工作表2”和“工作表3”上的对象,但不能编辑其他工作表上的对象。
这就是我使用的代码。
Public Sub WBOpen()
Dim sh As Worksheet
Dim allowObjects As Boolean
For Each sh In Sheets
If sh.Visible = xlSheetVisible Then
**If sh.Name = "Sheet 2" Or "Sheet 3" Then**
allo
我有一个用password(1)保护的VBProject。我试图添加一个工作表并在运行时更改它的代号,但我得到了一个error 50289
该代码是通过单击一个按钮从sheet1调用的。
Public Sub AddSheet()
Dim sh As Worksheet
With ThisWorkbook
.Worksheets.Add
Set sh = .ActiveSheet
.VBProject.VBComponents(sh.CodeName).Name = "sh" & VBA.Minute(VB
我正在尝试使用vba自动选择数据透视表的报表筛选部分中的日期。其思想是用户在运行宏之前输入开始日期和结束日期。代码将首先清除所有筛选器,然后选择在指定日期之间出现的所有日期。我有下面的代码,只要存在指定日期的数据就可以工作,但当没有数据时会抛出错误。任何对解决这个错误的帮助都将受到高度的感谢。
代码:
Sub PivotFilter()
Dim pvtF As PivotField
Dim pvtI As PivotItem
Dim StartDate As Date
Dim EndDate As Date
Sheets("Report").Activate
StartDat
在Excel2002中,我有多个数据透视表,每个数据透视表都位于不同的工作表中。
当我尝试用VBA用下面的代码生成这些图表时:
Set cht = Charts.Add(After:=Worksheets("Setup"))
With cht
' we use named ranges here
.SetSourceData Source:=range(tblName)
.Name = chtName
……
其中tblName是刚刚创建了几行的命名范围,如果只有一个表和图表生成,代码运行正常,但给我一个运行时错误1004:“PivotChart报