Tag: vba

在Excel中使用更改date格式

我有一个excel工作表,其中一列的datedate格式为"yyyyMMdd" ,我想将其格式化为"yyyy/MM/dd" 。 为此,我试图在macros内使用下面的代码行,但它将单元格数据转换为“### …..#”而不是更改date格式。 Sheet1.Range("C3", "C302").NumberFormat = "yyyy/mm/dd" … result = "#####…#" … 有人可以告诉我为什么发生? 有没有其他办法做到这一点?

从VBA插入公式时出现不同的语言

我是否正确理解,如果我使用类似的命令 Set myRange.formula = “=ROW(mySheet!R12)” 我的macros会导致#NAME? 错误出现在单元格中,例如俄语Excel。 我的意思是在这种情况下,上面的公式应该是硬编码的 Set myRange.formula = “=СТРОКА(mySheet!R12)” 其中СТРОКА是SUM函数的俄语模拟。 我不希望Excel能够足够聪明地在运行时翻译公式。 那么有没有什么办法可以解决这个问题,而且最重要的是,什么是最通用的代码,使得macros不pipe语言如何都能正常工作?

如何获取范围内重复值的列表

我试图录制macros,但它使用复制和粘贴,但我更喜欢代码是dynamic的,因为我的数据范围每周更改。 我有2列, A & D 。 列A是一个数据透视表,所以我想,也许这就是为什么VBA代码向下移动行不行。 (尝试移动数据透视表的错误)。 我希望列D是来自A列的唯一重复列表,并将其压缩以便没有空白。 到目前为止,我可以提取独特的重复和浓缩他们,但结果粘贴它从D1而不是D8 。 所以我需要帮助把价值8行。 现在我不想复制和粘贴数据透视表作为值或试图摆脱它,因为我需要在那里的数据透视表,因为我可以每周刷新它的新列表。 任何build议或build议表示赞赏。 Sub dp() AR = Cells(Rows.Count, "A").End(xlUp).Row For Each p1 In Range(Cells(8, 1), Cells(AR, 1)) For Each p2 In Range(Cells(8, 1), Cells(AR, 1)) If p1 = p2 And Not p1.Row = p2.Row Then Cells(p1.Row, 4) = Cells(p1.Row, 1) Cells(p2.Row, 4) = Cells(p2.Row, […]

单元格中的所有文本是否使用相同的字体?

我正在处理一些通常在单元格内有大量文本的Excel文件。 我想运行检查,以确保所有的文字是相同的字体(特别是Calibri)。 目前,我有这样的做法。 但是运行速度非常慢。 Function fnCalibriCheck() As String Dim CurrentCell As Range ' The current cell that is being checked Dim SelectedRng As Range ' The selection range Dim F As Long Set SelectedRng = ActiveSheet.Range(Selection.Address) ' Defines the selection range For Each CurrentCell In SelectedRng ' Goes through every cell in the selection and […]

VBA晚期绑定 – 基于没有Word引用的用户计算机的用户表单

我有一个Excel的用户窗体/工作表打开一个Word文档/模板,并将该Word文档保存为一个PDF,具有特定的文件名,在同一个文件夹。 在我的Excel中的参考,我有Word对象库启用。 我的用户表单将在其他用户计算机上使用,这些用户计算机将不会启用这些引用(并且对于所有用户来说都太麻烦了)。 我的理解是,我所拥有的代码是“早期绑定”,它需要“后期绑定”来绕过其他用户启用对Word的引用的需要。 我的问题是我不知道或了解如何用我的代码做到这一点: Dim objWord As Word.Application Dim docWord As Word.Document Set objWord = CreateObject("Word.Application") Set docWord = objWord.Documents.Open(ThisWorkbook.Path & "\MyNewWordDocument.doc") docWord.ExportAsFixedFormat OutputFileName:=ThisWorkbook.Path & "\" + Cells(1, 6) + " – Offer Letter.pdf", _ ExportFormat:=wdExportFormatPDF objWord.ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges objWord.Quit 这个代码对我自己来说是完全可用的 但是,如前所述,由于未引用Word,因此不适用于其他人。

用户在Excel中定义的函数和速度问题

我有一个使用几乎所有UDF的Excel模型。 有说120列,400多行。 计算是垂直进行的,然后进行水平方向—即首先完成第一列的所有计算,然后第一列的最后输出是第二列的input等。在每一列中,我称之为六个或七个UDF调用其他UDF。 UDF经常输出一个数组。 每个UDF的input是一些variables,一些范围variables,一些双打。 在访问内容之前,范围variables在内部被转换为数组。 我的问题是,我可以build立没有UDF的Excel模型,当我运行模拟时,我可以在X小时内完成所有的计算。 当我使用UDF时,仿真时间是3X小时或更长。 (为了回答这个显而易见的问题,是的,我需要和UDF一起工作,因为如果我想对模型做一些小的修改(比如说添加另一个资产types(这是一个财务模型)),重build模型需要将近一天的时间没有UDF来适应新的法律/金融结构,UDF需要大约20分钟来适应不同的财务结构。) 在任何情况下,我已closures屏幕更新,没有复制和粘贴的function,Varianttypes的使用是最小的,所有的数据都包含在一张表中,我将所有范围typesvariables数组之前,获取内容。 除了让一台速度更快的计算机或等价物使VBA代码/ Excel文件运行得更快之外,我还能做些什么? 请让我知道这是否需要更多的澄清。 谢谢!

如何编写VBA代码来隐藏Excel中的所有列和行标题?

Private Sub hideHeadings() Dim obj As Window For Each obj In Application.Windows obj.DisplayHeadings = False Next obj End Sub 以上是我的尝试,因为当我logging代码做到这一点时,它将ActiveWindow.DisplayHeadings = false。 但是我一定会错过一些东西。 请提前帮忙谢谢。

Excel:用VBA命名的范围

我想用VBA在Excel中定义一个命名范围。 基本上,我有一个可变的列号。 然后循环运行以确定该特定列中的第一个空单元格。 现在我想定义一个从该特定列的第2行到该列中的数据的最后一个单元格(第一个空单元格-1)的命名范围。 例如,指定了第5列,其中包含3个值。 如果我是正确的,那么我的范围就是(2,5)(4,5)。 我只是想知道如何使用整数而不是(E2:E4)来指定这个范围。 这是否可能? 我发现这个代码来定义一个命名的范围: 'Change the range of cells (A1:B15) to be the range of cells you want to define Set Rng1 = Sheets("Sheet1").Range("A1:B15") ActiveWorkbook.Names.Add Name:="MyRange", RefersTo:=Rng1 任何人都可以推动我正确的方向来指定这个范围只使用整数?

如果Excel工作簿打开,那么… VBA

我怎么能写代码说呢。 Dim xlApp As Excel.Application Dim xlWorkbook As Excel.Workbook Dim xlWorksheet As Excel.Worksheet 如果一个Excel工作簿已经打开,那么…. Set xlApp = GetObject(, "Excel.Application") elseif xlApp is nothing then Set xlApp = New Excel.Application xlApp.Visible = True Set xlWorkbook = xlApp.Workbooks.Open("E:\InspectionCreator\InspectionSheet.xlsx") End if 我不希望它必须是一个特定的工作簿,只是任何工作簿,我似乎无法在互联网上find任何东西。 任何帮助都是极好的。

如何使用excel VBA脚本删除某些字符

下面的VBA脚本摆脱不需要的字符,但不幸的是只有NUMBERS。 你能帮我吗?它也需要去掉字母,如下面的表格(粗体)所示。 范围可以是从0到15000+单元的任何地方 ………………………………………….. … 一个新的约克一次 b新byork b次b c新c纽约c水城c纽约c 6月 6日新6约克6城6 ………………………………………….. …. VBA脚本: Sub Remove() Application.ScreenUpdating = False Dim R As RegExp, C As Range For Each C In Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row) If R Is Nothing Then Set R = New RegExp R.Global = True R.Pattern = "\D" C.Offset(0, 1) = R.Replace(C, "") […]