我基本上试图根据combobox所采取的值在用户窗体上显示不同的文本框。 我创build了一个名为CControlEvents的类模块,其中描述了更改combobox的值时应该发生的事件: Private WithEvents mclsCbx As MSForms.ComboBox Private WithEvents UnitmclsTbx As MSForms.TextBox Private WithEvents UnitmclsTbxLabel As MSForms.Label Private WithEvents SpecMinMoymclsTbxLabel As MSForms.Label Private WithEvents SpecMaxMoymclsTbxLabel As MSForms.Label Private WithEvents SpecMinIndmclsTbxLabel As MSForms.Label Private WithEvents SpecMaxIndmclsTbxLabel As MSForms.Label Private WithEvents SpecMinMoymclsTbx As MSForms.TextBox Private WithEvents SpecMaxMoymclsTbx As MSForms.TextBox Private WithEvents SpecMinIndmclsTbx As MSForms.TextBox Private WithEvents SpecMaxIndmclsTbx […]
因为我是相当新的VBA我需要帮助我的代码的一部分,这应该是比较两个数组按顺序递增,如果在任何一个数组中的值是丢失,那么它应该添加行到适当的表和用值为零的缺失值填充到它旁边的单元格。 这是我到目前为止: With ActiveSheet LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row End With For I = 3 To LastRow If Cells(I, 1) > Cells(I, 6) Then LastRow = LastRow + 1 With Range("A" & I & ":C" & I) .Select .Insert Shift:=xlDown End With Range("A" & I) = Cells(I, 6) Cells(I, 2).Value = 0 ElseIf Cells(I, 1).Value < […]
使用Excel 2010。 我有一个工作表,其中有4列。 我有条件格式(突出显示如果重复)的前2列。 单元格中的列可以具有文本或数字。 格式化工作,就像在其他地方复制的列A中的任何单元格一样,第一个单元格以及任何其他单元格都会突出显示。 B列是相同的方式。 Col A Col B P103 847 P103 849 P103 361 P1043 415 P1051 449 P1051 339 P1051 394 P10513 339 在这个例子中,列A条目P103&P1051将全部高亮显示为重复。 在列B中,这两个339个条目将被突出显示为重复。 在右侧的新列中,我想计算A列或B列中的任何单元格是否已经突出显示为重复。 Col A Col B Col C P103 847 1 P103 849 1 P103 361 1 P1043 415 0 P1051 449 1 P1051 339 1 P1051 […]
我已经成功地编写了代码,将复制一个单元格,粘贴到另一页上的单元格,然后清洗重复3个其他列。 见下文: Sub Click() Dim amattuid As String Dim finalrow As Integer Dim i As Integer Application.ScreenUpdating = False Sheets("Buckhalter VB").Range("A6:G200").ClearContents amattuid = Sheets("Buckhalter VB").Range("B3").Value finalrow = Sheets("Current Heirarchy").Range("BM2000").End(xlUp).Row repattuid = Sheets("Buckhalter VB").Range("A6").Value For i = 4 To finalrow If Sheets("Current Heirarchy").Cells(i, 65) = amattuid Then Sheets("Current Heirarchy").Cells(i, 46).Copy Sheets("Buckhalter VB").Range("A200").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues Sheets("Current Heirarchy").Cells(i, […]
我按照以下代码合并了工作簿数据: Sub Merge2MultiSheets() Dim wbDst As Workbook Dim wbSrc As Workbook Dim wsSrc As Worksheet Dim MyPath As String Dim strFilename As String Dim CurrentRow As Integer Dim CurrentColumn As Integer Dim Index As Integer Application.DisplayAlerts = False Application.EnableEvents = False Application.ScreenUpdating = False MyPath = "D:\Excels" ' change to suit CurrentRow = 1 CurrentColumn […]
在我的项目中,我经常利用表和底层的ListObjects和ListColumns。 我喜欢它们,因为它们比裸露的Range对象更容易引用和更新。 然而,我仍然没有find一种理智和可维护的方式来处理由多个ListColumns组成的多个ListObjects,并在项目中的所有Worksheet中被引用。 比方说,我有工作表(与(名称)属性设置为“WorksheetA”)包含表(称为TableA)与less数列(称为Column1,Column2,…,Column10)。 现在我想引用另一个Worksheet的代码中的一列。 我可以这样做: WorksheetA.ListObjects("TableA").ListColumns("Column7") 现在,直接使用string是一个糟糕的做法,因为它很难维护,容易出错。 所以现在怎么办? 我可以创build专用的模块来存储我的string作为常量。 例如,称为“常量”的模块: Public Const TABLE_A As String = "TableA" Public Const COLUMN7 As String = "Column7" 然后我的参考可以转换为: WorksheetA.ListObjects(Constants.TABLE_A).ListColumns(Constants.COLUMN7) 但是,这个解决scheme有一些缺点: 在添加每个表格和列的情况下,常量模块会快速增长。 引用本身增长,变得不太可读。 所有与所有工作簿中的表相关的常量被扔进一个巨大的坑里。 我可以在WorksheetA中存储常量,并通过公共函数使其可用: Private Const TABLE_A As String = "TableA" Private Const COLUMN7 As String = "Column7" Public Function GetTableAName() As String GetTableAName = TABLE_A End […]
所以我从昨天开始重温 多列vlookup条件格式 一切都按照斯科特·霍尔茨曼(Scott Holtzman)提供的条件格式声明(Scott Scott!)的意图工作。 现在我遇到了一个小问题。 我需要根据其背景颜色来计算单个单元格,并将其显示在另一个表格中。 我find了这个: https://www.ablebits.com/office-addins-blog/2013/12/12/count-sort-by-color-excel/ VBA脚本很好地计算我手动填充的单元格,但它不计算由条件格式化函数填充的单元格。 任何人有任何想法如何解决这个小呃? 与往常一样,任何能够提供任何见解的人都会感激不尽! 🙂
我正在为excel表添加autofilter,如下所示。 With Sheets("Sheet1") With .ListObjects("Summary").Range .AutoFilter Field:=1, Criteria1:=">400000", Operator:=xlOr, Criteria2:=Array("<>440400", "<>440600", "<>440300") .AutoFilter Field:=5, Criteria1:=">110", Operator:=xlAnd, Criteria1:="<105" .SpecialCells(xlCellTypeVisible).Copy End With End With 结果我是大于400000的geeting价值。 但是我得到了440400,440600和440300的值。 我如何添加两个filter?
我有什么 :一个Excel文件在一列(实际上它是自由格式化,但alignment在列内)一些元素是embedded的bmp图片,显示公式=EMBED("Paint.Picture","")当你点击在他们。 当您查看Excel工作表时,只显示代表图片的图标,而不显示图片本身 。 我想要的 :embedded的图片(不是图标)复制到一个新的Word文档。 我到目前为止的守则是 : 'Image Objects Dim myObjs As Shapes Dim myObj As Shape Set myObjs = ActiveSheet.Shapes 'Traversing objects Dim row As Integer Dim myRange As Range Dim myRange2 As Range Dim isAddressMatch As Boolean 'Word Document Objects Dim wordApp As New Word.Application Dim myWord As Word.Document 'Prepare word for […]
我正在编写匹配date(从文件)的代码,将其放入一个集合,然后尝试在电子表格中find它。 一旦find它,它会在两个单元格的集合中放入以下两项。 当我运行这个,我得到以下错误:“对象variables或块variables未设置”。 我试图debugging我的代码,它显示在下面的代码的第一个循环后,范围对象,“rthecell”,更改为适当的值。 一旦发生循环的第二次迭代,“rthecell”的值变为“Nothing”。 例如: Set rtheCell = Range("A:A").Find(What:=LineItem1) rtheCell.Offset(, 1).Value = LineItem3 rtheCell.Offset(, 2).Value = LineItem2 Set rtheCell = Nothing 同样,在循环的第一次迭代中,一切按预期工作,但是一旦第二次迭代发生,我就会收到错误。 以下是完整的代码: Sub InputData() 'Declare variables Dim sFilePath As String Dim sLineFromFile As String Dim saLineItems() As String Dim element As Variant Dim col As Collection Dim LineItem1 As String Dim LineItem2 As […]