Tag: vba

分配单元格值将更改其types

我的函数返回不同的string值。 例如: 8:15 : 8:15或7或B 我把它分配给这样一个单元格: MonthDaysRange1.Cells(1, i).Value = DayValue(i, MonthNum) 之后,Excel将单元格的格式更改为“时间”。 细胞变成8:15:00 。 我不想那样。 即使我用这个: MonthDaysRange1.NumberFormat = "String" 单元格值仍然是8:15:00 我只想用文本填充单元格,而不对格式进行任何更改。

基于单元格值的variables数组

以下代码显示具有固定大小的数组,具有六个值。 我应该怎么做才能使其规模取决于单元格的价值? 例如,从1到10? Dim MySlideArray As Variant Dim MyRangeArray As Variant 'List of PPT Slides to Paste to MySlideArray = Array(2, 3, 4, 5, 6, 7) 'List of Excel Ranges to Copy from. For now, assume that it's always 6 ranges With tb.DataBodyRange MyRangeArray = Array(Worksheets(.Cells(1, 1).Value).Range(.Cells(1, 2).Value), _ Worksheets(.Cells(2, 1).Value).Range(.Cells(2, 2).Value), _ Worksheets(.Cells(3, 1).Value).Range(.Cells(3, […]

根据单元格值复制整行并粘贴到新的工作表中,停在空白单元格上

我想弄清楚如何复制一整行,并将其粘贴到特定的工作表基于该行中的一个特定的单元格中的值。 我已经拼凑了几个不同的代码来做我所需要的,除非我需要它结束,一旦它到达一个空白单元格,我不知道如何修改,因为我没有使用循环。 以下是我到目前为止的代码。 任何帮助将不胜感激!! 此外,这段代码似乎需要很长时间才能运行,所以我可以清理它,使其运行更平滑也将有所帮助! Option Explicit Sub test2() Dim sh33tname As String Dim issuetyp3 As String Dim i As Long Dim startrow As Long Dim typ3 As String Dim ws As Worksheet Dim sheetexist As Boolean Dim sh As Worksheet sh33tname = "Issues List" issuetyp3 = "E" startrow = 22 Set sh = Sheets(sh33tname) […]

在Excel VBA中添加两个二维数组

我只是想知道如何在Excel中使用VBA添加两个二维数组。 我试图在互联网上search,在我看来,唯一的方法是循环每个元素。 我是对的还是有更好/更快的方法? 作为一个必然的问题:最好是循环或复制到Range,并使用PasteSpecial选项,如问题答案的精神, 如何添加数组 ?

在公式中引用其他工作表中的单元格时出错

在Excel中的公式是 =100/(INDIRECT("'History Data'!B" & M2)-100) 这里M2给出列B中的行号,这就是我使用INDIRECT函数的原因。 现在当我尝试在VBA中写这个,它会抛出一个错误,我不能find解决scheme,但我认为这是因为我引用的工作表有一个名称空间,因此我需要操纵单引号“在公式的开始和结束。 我写了这个 .Formula = "=100/(INDIRECT(" & Chr(34) & Chr(34) & "History Data" & Chr(34) & "!B" & M2 & ")-100)"

IF,Else,ElseIF在一定的date内循环

我想设置下面的条件,但我只能得到2条件完成 三个条件是不足七天的一个数值乘以一个数值,两个数据之间的范围乘以一个数值,超过30天乘以另一个数值。 无法让所有人都能工作 不知道出了什么问题 ' To create the following condition 'If less than 7 days interest = 0% ' if 8 to 30 days interest = 7% 'if more than 31 days interest = 9% Sub Workbook_Open() For i = 1 To 3 'Rows.Count xdate = Cells(i, 1) nulldate = DateAdd("d", -7, Date) irate7late = […]

打开只读工作簿进行编辑

我试图自动更新服务器上的文件,只读为每个人都可以访问。 编辑只为less数人使用。 因此,它是密码保护,但只用于编辑,而不是开放。 我试图写一个macros来打开一个密码保护的文件,但只适用于打开文件的保护。 我尝试了下面的代码,因为别人认为它可能有助于展示广告和/或忽略,但这并没有帮助。 我不断得到一个popup窗口,说:“input密码写访问,或打开只读”。 我甚至试过SendKeysinput密码,但比popup式显示太。 任何我可能没有的build议? Application.DisplayAlerts = False Workbooks.Open Filename:="test.xlsx", IgnoreReadOnlyRecommended:=True, Password:="password", ReadOnly:=False Application.DisplayAlerts = True

select透视列的第一项

我正在开发一个代码,以将绝对值的数据透视表转换为索引。 Private Sub Index_Change() Dim p As PivotTable Dim f As PivotField Set p = Sheets("1").PivotTables("2") With p.PivotFields("Sum of 1") .Calculation = xlPercentOf .BaseItem = "" .NumberFormat = "0,00%" End With End Sub 我正在寻找一种方法来select枢轴列的第一个单元格作为.BaseItem 。

删除没有特定文字的表单

在Excel中,我需要删除所有不以(2)结尾的表单, 下面的代码正确地删除了那些以(2)结束的代码,我只是不确定如何反转这个,'不喜欢'似乎不工作 Dim ws As Worksheet For Each ws In ThisWorkbook.Sheets If ws.Name Like "*" & "(2)" Then '~~> This check is required to ensure that you don't get an error '~~> if there is only one sheet left and it matches the delete criteria If ThisWorkbook.Sheets.Count = 1 Then MsgBox "There is only one […]

有没有更好的方法给用户一个string的select?

我正在使用VBA处理一堆数据。 由于数据不干净,偶尔我需要让用户手动select哪个是正确的。 如果可以,请尽量避免使用用户表单。 (尽pipe如果这是最好的方式将做到这一点)。 这是我到目前为止: Sub string_choice() Dim msgValue msgValue = MsgBox("Hello, which is correct? Choose:" _ & vbCr & "Yes: if you want option A" _ & vbCr & "No: if you want option B" _ , vbYesNoCancel + vbQuestion) If msgValue = vbYes Then MsgBox "You chose option A" ElseIf msgValue = vbNo […]