Tag: vba

提示值,然后复制但添加文本

我写了一个macros,提示用户input名称,然后input数字。 这用于填充标题行之后列G中的前3个单元格。 我真正需要的macros,然后重复这下三行,但添加10用户input的数字。 Sub Set_Tag() Dim Tag, TagName As String Dim x, TagNum As Integer TagName = InputBox("What is the product tag name? Ex. Apple", "Tag Name") TagNum = InputBox("What is the first product tag #? Ex. 500", "Tag #") Tag = TagName & "_" & TagNum x = Application.WorksheetFunction.CountIf(Range("J:J"), " ") ActiveSheet.Range("G2").Value = TagName […]

反向转置将行解除连接到列

我在Excel中有以下macros来采取这样的两列 Client | Product 12 | A 12 | B 12 | C 15 | A 15 | C 并转置连接成 Client | Product 12 | A,B,C 15 | A,C 现在我想创build一个excelmacros,做相反的事情,并采取这样的两列,反向转置un-concatenates他们进入 Client | Product 12 | A 12 | B 12 | C 15 | A 15 | C 我尝试了文本到列function,但它创build了这个 Client | Product 12 | A […]

通过循环input框填充的dynamic数组

我试图让用户input基于托盘数量的重量。 NumberPallets通过代码中其他位置的input框设置。 NumberPallets是3.我想这个循环3次,并要求每个托盘的重量和存储到PalletWeights(p),所以它看起来像这样: PalletWeight(1) = 200 PalletWeight(2) = 100 PalletWeight(3) = 300 TotalPalletWeight = 600 现在它给我一个下标错误,我相信这是因为我没有正确地做arrays。 我谷歌尝试使用PalletWeight(Ubound(PalletWeight)),但这也不起作用。 其他Googlesearch几乎没有单独获取InputBox数据的结果,也没有以逗号分隔的列表。 我需要改变什么来使这个function? ReDim PalletWeights(1 to NumberPallets) 'Added based on an answer on this question Dim PalletWeights() As String 'Array of pallet weights Dim p As Integer p = 1 Do While p <= NumberPallets PalletWeights(p) = Application.InputBox(Prompt:="What is […]

VBAinput工作日?

我正在尝试编写一个模板的代码。 每个月我都希望代码进入工作日。 但是,当我尝试代码时,它会更新工作日,但不是我想要的电子表格。 它将更新个人excel文件的date。 请指教。 Sub MG09Nov02 Dim mDay As Integer Dim Col As Integer Dim Dt As Integer Dim mMax As Integer Dim wNam As String Dim c As Long Range("B:C").ClearContents Select Case Month(Now) Case 2: mMax = IIf(Year(Now) Mod 4 = 0, 29, 28) Case 4, 6, 9, 11: mMax = 30 Case […]

从InStr函数返回True / False布尔值? VBA

我想用if函数做一个循环。 如果函数需要是包含“*”的活动单元格,则此条件。 – 如果像function不起作用,因为类似的function不能识别“*”的数字,因为它使用这些来定义string的部分。 我认为结合一个规则,如果function与InStr函数可以工作,但我不知道如何结合这些。 如何从InStr函数返回True / False布尔值?

如何做一个VLookup循环

我尝试search谷歌和提出的代码,但仍不能解决VLookup。 我有两个工作簿,一个是ActiveWorkbook,另一个是Template.xls(在范围A1:B13中的查找工作表名称“CtyAccesCode”)。 我想要做的是,如果AD列中的单元格不为空,则在同一行的AB列中的另一个单元格中使用VLookup来查找通信者。 下面是我使用的,但Excel运行此代码后不会给出值: For Each cell In Range("H2:H" & LastRow) ' This is the lookup range If IsEmpty(Range("AD" & i).Value) = False Then ' This finds out if cell in AD is empty Cells(i, 28) = Application.WorksheetFunction.VLookup(cell, _ Workbooks("Template.xls").Worksheets("CtyAccesCode") _ .Range("A1:B13"), 2, 0) ' This puts the find out value in cells in column […]

如何移动一个形状而不select它?

如何在一张纸上移动任何形状而不select它? 如果我使用: ActiveSheet.Shapes.Range(Array("Picture 18")).Select Selection.ShapeRange.IncrementLeft -76" 它出现在形状周围的版本边界。

简化跨多个选项卡并在不同列上sorting的loggingmacros

我已经录制了一个macros,它可以自定义sorting八个工作表,并按四列sorting。 我有一个工作簿共有九个工作表。 打开工作簿后,需要对前八个工作表进行sorting。 第九个工作表是条件格式和错误检查公式的validation页面。 我希望VBA比八个工作表中logging的macros更简单。 每个工作表需要按B,C,D和E列进行sorting。所有数据都从第5行开始,但不会在工作表中的同一行上结束。 我需要sorting整个工作表,而不仅仅是一个范围。 有没有比创build所有八个工作表的macros更简单的VBA? 我确定一个'For'循环可能会关注通过工作表循环,而xldown将会find每个工作表中的所有数据,但是我真的很困难如何使用需要执行的sorting来简​​化它。 logging的macros的VBA是: Sub Auto_Open() Sort_All Macro Range("A5").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select ActiveWorkbook.Worksheets("0809 Vehicles").Sort.SortFields.Clear ActiveWorkbook.Worksheets("0809 Vehicles").Sort.SortFields.Add Key:=Range( _ "B5:B217"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal ActiveWorkbook.Worksheets("0809 Vehicles").Sort.SortFields.Add Key:=Range( _ "C5:C217"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal ActiveWorkbook.Worksheets("0809 Vehicles").Sort.SortFields.Add Key:=Range( _ "D5:D217"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal ActiveWorkbook.Worksheets("0809 Vehicles").Sort.SortFields.Add Key:=Range( _ "E5:E217"), SortOn:=xlSortOnValues, […]

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范围配对,而不是像我在示例单元格中列出的那样只有两个配对?