Tag: macros

除非使用“打印到PDF”macrosbutton,否则如何禁用打印Excel工作簿?

我search了网站,找不到答案。 背景:我有这个macros作为工作表上的一个button。 它适用于我所需要的: Sub FactSheetSaveToPDF() ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ "C:\" & Range("b2") & " – " & Month(Date) & "." & Day(Date) & "." & Year(Date) & "." _ & Hour(Time) & Minute(Time) & Second(Time) & ".pdf", Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, _ OpenAfterPublish:=True End Sub 我现在需要做的是使用户只能使用这些button进行打印,出于合规的原因。 所以,无论是正常的打印是否被禁用,封锁,无论如何,这个Excel文档的用户应该只能打印一个工作表,如果他们点击button打印到PDF。 在这个macrosbutton之外不能有人打印。 CTRL + P,文件打印,全部不允许。 我看到一个答案,禁止所有打印,包括从macros观。 这是行不通的。 打印到PDFmacrosbutton需要工作。 我看到另一个答案,禁止用户可能打开的所有excel打印; […]

更新不同系列的图表

我在Excelmacros中使用这段代码来强制更新大量覆盖图表: Set sht = ActiveSheet For Each co In sht.ChartObjects co.Activate For Each sc In ActiveChart.SeriesCollection sc.Select temp = sc.Formula MsgBox temp sc.Formula = "=SERIES(,,1,1)" sc.Formula = temp Next sc Next co 代码运行良好,但在一个包含5个元素(而不是4个)的图表上,我得到了一个错误: sc.Formula = "=SERIES(,,1,1)" 你可以build议我如何修改代码,以使其适用于我所有的图表?

尝试插入空白行x次,x =单元格值

我试图插入一个特定数量的空行,这是基于一个单元格中的值。 单元格中的这个值是来自表格的计数函数。 我有一个“导入表”工作表,其中包含我所有的数据。 在表格旁边,我有几个计数函数,它们计算来自表格的一般类别。 例如,在“导入表格”工作表单元格J8(国内股票)中,单元格J9具有计数function,对于这种情况来到“11”。 我现在想在我的“分析”工作表的特定位置插入11行。 在这个工作表中,还有标题的名称,如计数标题(国内资产)。 因此,在国内公平的情况下,我希望行被插入。 在分析表中,已经在国内权益的第一行中创build了一个函数,所以在这种情况下,在第6行的下面插入新的空白行。 单元格(A6,B6,C6,D6,E6)中已经存在的公式必须被闪存填充到新创build的白色行中。 我附上了2张图片,希望能够澄清我的问题。 谢谢!

在VBA中引用Outlook的公用文件夹

下面的VBA代码映射到Outlook中我的收件箱中的“testing”文件夹。 我需要它映射到我的Outlook(公用文件夹> ABC文件夹> 123文件夹> Tat监视器文件夹)中的公用文件夹中的“TAT监视器”文件夹。 我尝试插入“olPublicFoldersAllPublicFolders”来代替“olFolderInbox”,但它不能识别它。 Public Sub GetAttachments() Dim Inbox As MAPIFolder Dim Item As MailItem Dim Atmt As Attachment Dim FileName As String Dim firstDate As Date Dim secondDate As Date Dim i As Integer Set Inbox = GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Parent.Folders.Item("Test") firstDate = Date – 1 + TimeValue("8:00:00am") secondDate = Date – 1 + TimeValue("8:30:00am") […]

在VBA中select一个特定的表单和范围

我将具有多个工作表的工作簿中的数据parsing到单个工作簿/工作表中。 我已经从“标题”表中select单元格,并根据需要将它们安排到我的目标工作簿(活动)中。 现在我想select来自同一个源工作簿(TimeSheet1)“星期天到星期六”(表格3,4,5,6,7,8,9)的表格。 在每一天工作表中,我想指定一个单元格范围(A2:C57)。 我怎样才能做到这一点? Sub ParseTimeStudy() Dim WrkBookDest As Workbook Dim WrkBookSrs As Workbook Dim WrkSheetDest As Worksheet Dim WrkSheetSrs As Worksheet ', WrkSheetSrs2 As Worksheet Dim WrkShArray As Worksheets Dim Rng As Range, Rng2 As Range, Rng3 As Range, Rng4 As Range, Rng5 As Range, Rng6 As Range Dim RngWeek As Range Set […]

在一个excel大纲(VBA生成)中,如何使用小计(109)而不是(9)?

我正在使用VBA自动小计电子表格中的一些数据。 我目前有…function:= xlSum把小计公式放在适当的单元格等 问题是这个公式默认使用了function_num 9而我想要109 (所以隐藏的值不包括在内)。 我想排除隐藏的价值看起来很奇怪,但我的疯狂绝对有办法。 这是我所拥有的: Selection.Subtotal _ GroupBy:=groupColumn, Function:=xlSum, _ TotalList:=Array(4, 5, 6, 7, 8, 9, 10, 11), _ Replace:=True, PageBreaks:=False, SummaryBelowData:=True 任何人都可以提出一个解决scheme或解决方法?

只在一个工作簿中运行macros

我有两个工作簿用于数据交换。 工作簿A是主要的一个,它从工作簿B提取信息。我有A运行的macros,我只想在A中执行,但是当我在B之前打开A时,macros在B中执行。如果我打开B在A之前,那么macros按预期在A中工作。 Private Sub Workbook_Open() 'If ThisWorkbook.Name = "A" Then ThisWorkbook.Sheets("Background").Select Call Background_Lists Call Find_Missing 'End If End Sub 我试图使用表/工作簿激活以及用If语句(注释掉),没有运气。 任何指针将是伟大的! 编辑:这是Background_Lists的代码 Sub Background_Lists() a = 0 Range("E4:E2004").Clear Range("B4:B2004").Value = Range("=Parts!B18:B2018").Value Range("D4:D2004").Value = Range("=[B.xlsx]Sheet1!A2:A2002").Value For i = 4 To 2004 If Cells(i, 4).Value >= 300000 Then Cells(4 + a, 5).Value = Cells(i, 4).Value a = […]

VBA在下一个空单元格中粘贴值

我有一个VBAmacros,只是将一个单元格(Worksheet1.a1)的值复制到另一个单元格(Worksheet2.a1),这是由一个button与分配的macros触发。 Sub copy_values() Worksheets("Worksheet2").Range("a1").Value = Worksheets("Worksheet1").Range("a1").Value End Sub 问题是,在Worksheet1上,我有一个combobox,列出所有可用的病人。 根据select什么病人,Worksheet1.A1中的值会更改。 所以说我select“病人A”,并使用button复制粘贴到Worksheet2.A2 Worksheet1.A1(可以说是值“500”)的值。 如果我然后使用combobox来select“Patient B”,它将Worksheet1.A1的值更改为“600”,并继续使用该button将此值粘贴到Worksheet2.A2,以前的“500”新价值显然被覆盖了。 我需要保留这两个值。 因此,在将患者A的值粘贴到Worksheet2.A1中之后,我需要将患者B的值以dynamic方式粘贴到Worksheet2.A2中。 我不能硬编码,因为我有一个300多名患者的名单。

如何根据用户窗体的条件生成唯一的ID

我有一个用于病人注册的USerorm,在UserForm中有一个用于select主要医生的combobox,我想根据医生的select生成病人ID的方法,我甚至不从哪里开始,我希望代码评估哪个是最后一个具有相同前缀的ID来生成下一个ID,例如 KT000001 KT000002 LG000001 这是UserForm代码 Private Sub CommandButton1_Click() Dim iRow As Long Dim ws As Worksheet Set ws = Worksheets("Lista Pacientes") 'find first empty row in database iRow = ws.Cells.Find(What:="*", SearchOrder:=xlRows, _ SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1 'check for a Valid patient name If Trim(Me.TextBox1.Value) = "" Then Me.TextBox1.SetFocus MsgBox "Favor Introducir Nombre" Exit Sub End […]

Excel VBA – 为什么这个macros删除一切

我需要这个macros的帮助。 我有一个格式很差的工作簿,但每次我打开它。 其中,目标是find列B中的非空白单元格,并删除下面的整个2行以及每个填充的B单元格上方的第1行。 我在代码中的第一个循环的工作方式就像我想要的那样,但是第二个循环似乎只在第一个填充的B单元实例上工作,但是它会删除其上的所有其他内容,比如500个单元的数据。 有人可以向我解释为什么会发生这种情况吗?如果你能find一种方法把这两个循环合并为一个,那也不错。 Sub test() Dim currentSht As Worksheet Dim startCell As Range Dim lastRow As Long, lastCol As Long Dim colNames As Variant Dim i As Integer, j As Integer Set currentSht = ActiveWorkbook.Sheets(1) Set startCell = currentSht.Range("A1") lastRow = startCell.SpecialCells(xlCellTypeLastCell).Row lastCol = startCell.SpecialCells(xlCellTypeLastCell).Column For i = lastRow To 1 Step -1 […]