Tag: 范围

Interop.Excel.Range与dynamic

当我试图为excel文件中的一系列单元格设置一个数字格式时,我发现了一个非常奇怪的行为。 有两个代码示例: // First example uses the Microsoft.Office.Interop.Excel.Range interface. void SetupFormat(Range range) { range.NumberFormat = "0" + CultureInfo.InstalledUICulture.NumberFormat.CurrencyDecimalSeparator + "00%"; } // Second one uses a dynamic. void SetupFormat(dynamic range) { range.NumberFormat = "0" + CultureInfo.InstalledUICulture.NumberFormat.CurrencyDecimalSeparator + "00%"; } 当我使用第一种方法,我得到的数字如012%,当我使用第二种方法,我得到的数字如12.34%(如预期)。 在数字格式中使用句点时,第一种方法工作正常。 有人知道为什么这种方法有不同的行为?

excel vba代码在列中查找值很慢,我如何使它更快?

我的vba代码如下,如何更快? (obs:我有+ – 33000行的价值)我从产品search代码到我的公司,我需要帮助做得更快。 Private Sub TextBox1_Enter() Dim FindString As String Dim Rng As Range FindString = TextBox1.Text If Trim(FindString) <> "" And Len(TextBox1.Text) = 6 Then With Sheets("CADMAT").Range("B:B") 'searches all of column B Set Rng = .Find(What:=FindString, _ After:=.Cells(.Cells.Count), _ LookIn:=xlValues, _ LookAt:=xlWhole, _ SearchOrder:=xlByRows, _ SearchDirection:=xlNext, _ MatchCase:=False) If Not Rng Is Nothing […]

CONCATENATEfunction与dynamic范围

我想要一个dynamic范围的CONCATENATE函数。 范围可能非常不同,请参阅下面的示例。 是否有可能通过一个简单的代码来做到这一点? 范围仅用于行,其中列中非空单元格的数目不同。 我需要将每两个单元格配对,例如。

VBA,移动一些范围下来,如果不匹配的时间

我有16k行的数据。 有两列与时间。 我需要的是find时间不匹配的行,并将最后3列中的下划线移动到下一行,所以最后我会把所有的行与时间匹配,那些不会有最后3列空白的行行。 在这里我到目前为止,但我是新来的VBA,这是行不通的 Sub timeline() Dim y As Long With ThisWorkbook.Sheets("L5") y = .Range("G" & .Rows.Count).End(xlUp).Row End With x = 2 Do While ThisWorkbook.Sheets("L5").Cells(x, 4) <> "" If ThisWorkbook.Sheets("L5").Cells(x, 4).Value = ThisWorkbook.Sheets("L5").Cells(x, 7).Value Then Else: ThisWorkbook.Sheets("L5").Range("Gx:Iy").Select Selection.Offset(1, 0).Select y = y + 1 End If x = x + 1 Loop

types不匹配传递单元格(3,4)作为范围参数

我正在Excel中使用一个以Range作为参数的子类来编写一个小类。 但是,当我尝试使用单元格调用它,我得到types不匹配错误。 (使用范围调用工作正常) 代码摘录: Dim Com, Gua As Worksheet Set Com = Worksheets(cCom) Set Gua = Worksheets(cGua) Dim myFirm As clsFirm Set myFirm = New clsFirm Call myFirm.Init(Gua.Cells(3, 4)) '<–ERROR HERE Call myFirm.Init(Gua.Range("E3")) ' this line works 这里是子: Public Sub Init(nameCell As Range) pAddress = nameCell.Address pName = nameCell.Value2 pContract = nameCell.Offset(0, -3).Value2 pAmount = […]

在VBA中更改范围以select表格的第一行

目前,在Excel VBA中,我有一个简单的函数,它读取工作表第一行中的一组值,稍后将其用于公式中。 equity(i) = Worksheets("Data").Range("D2").Offset(i – 1, 0) debt(i) = Worksheets("Data").Range("E2").Offset(i – 1, 0) riskFree(i) = Worksheets("Data").Range("F2").Offset(i – 1, 0) 我想改变这个,以便函数只读取工作表上高亮select的值。 因此,如果我从第20行开始的数据中select一个数值表,它应该在D20,E20 F20等中读取,而不是现在设置的D2,E2和F2。 我努力了: equity(i) = Worksheets("Data").Range("D" & Rows.Count).end(xlUp).Offset(i – 1, 0) debt(i) = Worksheets("Data").Range("E" & Rows.Count).end(xlUp).Offset(i – 1, 0) riskFree(i) = Worksheets("Data").Range("F" & Rows.Count).end(xlUp).Offset(i – 1, 0) 但没有运气。 我究竟做错了什么? 我到目前为止看起来是这样的 Function VarunModel(Table As Range, […]

从用户表单input更改图表范围

我做了一个用户表单,这样一个人可以input一个开始date和一个结束date,这样一个折线图就会显示出所需要的信息。 目前我除了范围更新语法之外还有其他的工作。 我将开始date的数据的地址保存为广告,将结束date的地址保存为添加(都是string)。 然后我尝试使用这些设置范围,但我做错了什么。 这里是代码。 Dim CellX1 As Integer Dim CellY1 As Integer Dim CellX2 As Integer Dim CellY2 As Integer Dim Ad As String Dim Add As String Sheets("Data").Activate Cells(CellY1, CellX1).Activate Ad = ActiveCell.Address 'set start address Cells(CellY2, CellX2).Activate Add = ActiveCell.Address 'set end address Sheets("Graph").Activate ActiveSheet.ChartObjects("Chart 1").Activate ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).Name = "=""A3""" 这是我无法工作的代码行: ActiveChart.SeriesCollection(1).Values […]

windows.visible = false防止使用命名的范围

我有一组写入数据库的用户forms(为了方便数据input)。 两个用户表单使用combobox行源的数据库命名范围: Application.Workbooks.Open "path\TestDestination.xlsx" Me.ContactCompany.RowSource = "test.CompanyList" 这工作正常,但打开数据库文件,即使我closures屏幕更新(?)。 进一步search,似乎application.screenupdating = false将正是我所期待的。 我将这些行改为下面的代码: Application.Workbooks.Open "path\TestDestination.xlsx" Me.ContactCompany.RowSource = "test.CompanyList" Windows("TestDestination.xlsx").Visible = False'(Also tried activewindow.visible = false) 这可以隐藏工作簿,但无论出于何种原因,都会使input工作簿无法使用命名范围(test.CompanyList),并返回超出范围的错误。 我通过广泛的searchfind的唯一解决scheme表明,可能是因为它将[hidden]添加到文件名中,从而导致错误的沟通(如果我理解正确的话)。 为了避免这种情况,我打开后立即插入这一行 ActiveWindow.Caption = TestDestination 没有骰子。 我很抱歉,如果这是一个明显的解决scheme,或者如果我解释不好,我不知道VBA,我只是在学习,因为我去工作。 任何build议将不胜感激。 谢谢。

根据Excel中另一列中列出的指标范围从列中select元素

不知道这是否是正确的地方,但是假设我有一个C列的条目,另一个D列的C中的元素的某些索引。现在,如果我只想selectC中与这些索引相对应的元素,我能做到这一点,为了从另一列的值减去每个相应的值? 例如:D是一个列表{100,231,567,789,911},表示列C中元素的行号,我想在另一列中select这些元素; 从另一列的值中一次减去一个,例如E.

date范围之间的多个单元格之和

我有一个储存的价格信息已过期的工作表。 列A具有存储date的列表,并且列K,L和M需要被添加在一起,并且被列E的总和所减去,如果它们在给定date范围内的话。 Q1是以“7/15/15”格式select开始date的位置,Q2是您select所需范围结束date的位置。 这里有一些图片来帮助我描述的内容: 不考虑第二个图像“平均利润”单元,这应该被称为“总利润”