Tag: excel vba

Excel 2010 VBA复制范围A:Z和粘贴A2:Z

我试图研究,但没有与我想要实现的运气。 我正在处理两个不同的文件; file1.csv(工作表1)和工作簿1(工作表2) file1.csv(sheet1)包含来自A列的数据:EW,1000+行,并定期用新行更新 这里的最终目标是自动复制file1.csv(工作表1)的全部内容,并将工作表1中的数据粘贴到工作簿1(工作表2)中,从工作表2上的A2开始,因为我需要A1在工作表2上保持空白 我也应该注意到,我不能提供实际的文件,因为它们是保密的,如果有必要,我可以制作一个示例文件。 这是迄今为止在workbook1中的代码,但在复制到/从不同范围进行复制时不起作用。 如果我把它改为从A:EW复制到A:EW, 但是我需要从Sheet1上的A:EW复制到Sheet2上的A2:EW,这很好用。 有没有人有任何build议? Sub auto_open() ' ' auto_open Macro ' ChDir "C:\" Workbooks.Open Filename:="C:\Users\Username\Desktop\file1.csv" Sheets("sheet1").Range("A:EW").Copy Windows(ThisWorkbook.Name).Activate Worksheets("sheet2").Activate Range("A2:EW").Select ActiveSheet.Paste Windows("sheet1").Activate Application.CutCopyMode = False ActiveWorkbook.Close ' Change date/time format of column A from 20151111 090412 to 11/11/2015 9:04 Dim x As Integer Dim y As Date Dim z As […]

如何设置代码来dynamic分隔多次?

我正在分析从网站中提取的一些数据,现在它在Excel中的一个单元格中被格式化,例如: [2015-08-01–2010-01-01], Jerry Smith; [2009-12-31–2000-01-01], John Brown 所有这一切都在哪里,让我们说,A1。 我想先用分号分隔它,然后转置信息,然后将这两个date分隔成两列,这样上面列出的例子的最终结果变成了一个2×3的单元格组,其列为1开始date2.结束date3.名称 我已经玩了一些VBA代码,我感到沮丧,因为我甚至不知道如何编码第一步用分号分隔。 这是我到目前为止使用的: Sub CommandButton1_Click() Selection.TextToColumns _ Destination:=Range("A1"), _ DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, _ Tab:=False, _ Semicolon:=True, _ Comma:=False, _ Space:=False, _ Other:=False, _ OtherChar:=False, _ End Sub 我知道这是用分号分隔的不正确的第一步,那么我需要做些什么来解决这个问题?我如何处理我描述的下一步? 另外,如何正确地编写代码,使其能够适应3+名称和date范围配对,而不是像我在示例单元格中列出的那样只有两个配对?

当我尝试将公式应用于单个单元格时,为什么列中的每个单元格都会得到公式?

我正在尝试创build一个引用另一个表的公式列,我希望能够对新列进行sorting而不影响值。 我在尝试: ' dataTable is a ListObject Dim statusCol As ListColumn Dim statusRange as Range Dim statusCell As Range Dim statusIndex as Integer Set statusCol = dataTable.ListColumns.Add(2) dataTable.HeaderRowRange(2) = "Status" Set statusRange = statusCol.DataBodyRange statusIndex = 1 For Each statusCell in statusRange.Cells statusCell.formula = "=IF(INDEX(MatchColumn," & statusIndex & "), ""X"", ""Y"")" statusIndex = statusIndex + […]

未设置块variables – 工作簿打开时出错

这个macros是不是由我写的,所以我很难理解错误的来源。 我有一个应该在启动时运行的macros来调整function区以添加一个button,另一部分是在select该button时删除样式。 目前,我得到消息: Object variable or With block variable not set 。 当我select“debugging”它进入VBA屏幕,并立即给我3错误popup窗口说: Can't execute code in break mode 。 第一部分是在启动时运行的两个子目录,它们是: Dim WithEvents app As Application Private Sub App_WorkbookActivate(ByVal Wb As Workbook) Module1.MyRibbon.Invalidate End Sub Private Sub Workbook_Open() Set app = Application End Sub 它突出了Module1.MyRibbon.Invalidate作为有问题的位。 就我个人而言,我本身并没有看到任何问题,但问题可能在模块1中? 该代码包含三个子目录,如下所示: Public MyRibbon As IRibbonUI 'Callback for customUI.onLoad Sub […]

复制粘贴一个单一的值多次到另一个表

我有一个列“ID”,从Sheet1中的列C3开始,其中所有的id列在每个唯一的ID之间的间隔为4个空白单元格,如下所示 我想复制这个ID并粘贴到Sheet2五次,如下所示 任何人都可以build议我怎样才能得到这个自动化的帮助下的VBA

用户窗体:索引匹配条件

我有我的用户表单,包括供应商(combobox1),产品(combobox2),单价(textbox1) 我希望当我在用户表单中select供应商和产品时,单价将自动查找excel数据表(AddProduct)并获得单价结果。 在AddProduct工作表中,我的供应商是A2列:A10,B2列:B10产品,C2列是单价:C10 我有我的代码是这样的: Dim ReturnVal As Variant ReturnVal = Evaluate("=INDEX('AddProduct'!$C$2:$C$10,MATCH(1,(""" & Me.ComboBox1.Value & """='AddProduct'!$A$2:$A$10)*(""" & Me.ComboBox2.Value & """='AddProduct'!$B$2:$B$10),0))") If Not IsError(ReturnVal) Then Me.TextBox1.Value = ReturnVal Else Me.TextBox1.Value = "N/A" End If 虽然我已经在AddProduct表单中插入数据,但是表单的事实是它将返回N / A。

循环浏览产品列表并输出到不同的电子表格中

我有一个工作簿(C:\ DOORS.xlsx)与以下数据: ABCD 100 … Type A Description Remarks 102 … Type B Description Remarks 103 … Type C Description Remarks 我需要创build一个循环,通过每一行输出数据到不同的工作簿(C:\ QT.xlsx)。 它需要能够确保Door和Description的值不能超过55个字符。 如果它们的长度超过55个字符,则需要将其余部分移动到下一行,而不用将单词减半。 此外,如果备注是空白的,那么这是描述应该去的地方。 在QT.xlsx上,输出将如下所示: 'Starting at cell D18 ABCD 18 Door: 100, 100, 103, 104, 105, 19 106, 107, 108, 110, 107 20 Type A 21 Remarks A 'Text Should Be Bold […]

Excel VBA:应用程序定义或对象定义的错误

我已经写了一些代码来查找excel文件中的括号组,并将它们之间的单元格的内容白掉。 在我得到错误信息之前,我有26-27行的代码。 这里是代码: Sub macro() Dim white As Long Dim rowIndex As Long Dim colIndex As Long Dim lastRow As Long Dim lastCol As Long white = RGB(Red:=255, Green:=255, Blue:=255) With ActiveSheet lastRow = .Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row lastCol = .Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column For rowIndex = 1 To lastRow For colIndex = 1 To lastCol If […]

在复制行时存在error handling

跟着我的post如果单元格的值匹配UserForm ComboBox列,然后复制到工作表 。 我设法让代码工作,移动检查名称,然后移动到正确的工作表。 我遇到的问题是检查表单是否存在。 如果在combobox的表格和列2中find匹配项,但没有该值的表单,则会崩溃代码。 一旦所有的信息被复制到相关的工作表,我希望它显示一个msgbox告诉用户有多less行数据已被复制到相应的工作表。 Dim i As Long, j As Long, lastG As Long, strWS As String, rngCPY As Range With Application .ScreenUpdating = False .EnableEvents = False .CutCopyMode = False End With On Error GoTo bm_Close_Out ' find last row lastG = sheets("Global").Cells(Rows.Count, "Q").End(xlUp).row For i = 3 To lastG lookupVal […]

Excel VBA保护,但看不到运行

我有几个macros,我想与我的公司分享。 不幸的是,为了保护我的代码免受其他人的干扰,我locking了macros,但是它不允许最终用户看到它们的macros。 我可以把它放到他们的电脑上,如果我拔起VBA编辑器就可以看到它。 无法解锁项目或从单独的项目运行无法运行。 是否有解决scheme来locking项目,但允许他们运行macros?