Tag: excel vba

将数据从一行中的两个单元格合并到一个单元格中,并重复列中的所有单元格

从本质上讲,我有一些将创build两列数据的代码。 我需要连接水平相邻的单元格(A1:B1合并,A2:B2合并,A3:B3合并等),但我没有发现的代码似乎没有帮助。 感谢您的任何反馈

用户表单validation

我有一个用户窗体与特定的文本框,我只想应用数字规则(没有string条目)。 我在创build适当的error handling程序方面遇到困难。 从本质上讲,因为这些文本框将被用来执行一个math函数,具有string值导致潜艇崩溃,我不能找出正确的语法来停止string条目。 我目前的代码是: Private Sub TextBox12_Change() Sumdatup End Sub Private Sub TextBox16_Change() Sumdatup End Sub Private Sub TextBox21_Change() Sumdatup End Sub Private Sub Sumdatup() Dim Total As Double Total = 0 If Len(TextBox12.Value) > 0 Then Total = Total + CDbl(TextBox12.Value) If Len(TextBox16.Value) > 0 Then Total = Total + CDbl(TextBox16.Value) If Len(TextBox21.Value) […]

仅在PC上抛出1004错误

VBAmacros引发运行时错误“1004”:Range类的PasteSpecial方法失败 macros在PC上运行时,只会引发此错误。 在Mac上,macros无缝运行。 下面的macros有什么理由会抛出一个错误? Option Explicit Sub DCR() Dim J As Integer Dim K As Integer Dim L As Range Dim sDay As String Dim sMonth As String Dim sTemp As String Dim iTarget As Integer Dim dBasis As Date Dim Wb As Workbook Dim Wb2 As Workbook Set Wb = ThisWorkbook Set L = […]

根据数值突出显示X个单元格

我在Excel中创build一个度假跟踪器。 第一个工作表从SharePoint的数据中提取开始date,结束date和date差异计算。 Sheet1 A2=12/16/2015 B2=12/20/2015 C2=5 第二张是数据的可视化。 它从单元格B1开始并且出去90天。 这是date的字表示。 以下是我使用的公式=UPPER(TEXT(B2,"DDD")) Sheet2 B1=WED C1=THU D1=FRI E1=SAT F1=SUN 下一行总是B2有一个总是今天的date的公式。 从那里我添加一个date,将date增加到90天。 B2=Today()和其他单元=B2+1等等 B2=16 C2=17 D2=18 E2=19 F2=20 我想要做的是在Sheet2突出显示start date和end date 。 例如,老板从12/16/2015年12/20/2015 12/16/2015 12/20/2015至12/16/2015年12/20/2015 12/16/2015 12/20/2015休假。 我需要用红色突出显示Sheet2上的单元格B3-F3 。 从2015年12/17/2015至2015年12/17/2015假期的秘书的细胞以C4-E4.另一种颜色突出显示C4-E4. 这可能需要一些VBA我只需要一个起点。 我尝试使用VLOOKUP来拉取数据,但是使用另一个表格的范围不起作用。 说实话,我不知道这是否是正确的做法。

使用xlValueIsBetween作为pivot值的Excel VBA

我正在尝试创build一个模块,以在单个工作簿中的多个工作表上共享function。 除了一些过滤代码,所有的工作都很好。 下面的代码工作正常,如果我把它放在一个工作表中 ActiveSheet.PivotTables("PivotTable1").PivotFields("MyField"). _ ClearValueFilters ActiveSheet.PivotTables("PivotTable1").PivotFields("MyField").PivotFilters.Add Type:=xlValueIsBetween, DataField:=ActiveSheet.PivotTables _ ("PivotTable1").PivotFields("MyValue"), Value1:=bottom, Value2:=Top 但是,我想在我的模块中使用此代码,并发送以下内容: 数据透视表名称, 行数据透视图字段, Value Pivot字段 “之间”的价值 底部“之间”值 就像是: 表单调用 Call Mod_Filter("PivotTable1", "MyRowFieldName", "MyValueFieldName", 0, intvalue) 模块代码 Public Sub Mod_Filter(ByRef PT_Name As String, ByRef StaticField As String, ByRef Filter_field As String, bottom As Double, Top As Double) ActiveSheet.PivotTables(PT_Name).PivotFields(StaticField).ClearValueFilters ActiveSheet.PivotTables(PT_Name).PivotFields(StaticField).PivotFilters.Add Type:=xlValueIsBetween, DataField:=ActiveSheet.PivotTables _ (PT_Name).PivotFields(Filter_field), […]

比较来自两张不同纸张的单元格的值

首先我的代码: Option Explicit Sub UpdateCandidates() Application.ScreenUpdating = False Dim wks As Worksheet, wks2 As Worksheet Dim Lastrow As String, Lastrow2 As String Dim Rng As Range, i As Long, Rng2 As Range, i2 As Long Dim cell As Variant, cell2 As Variant Set wks = ThisWorkbook.Worksheets("Candidates") Lastrow = wks.Range("B" & Rows.Count).End(xlUp).Row If Lastrow > 1 […]

当使用数组时,“下标超出范围”

我是VBA的新手,在尝试使用数组来计算数字列表中的最大值时遇到错误9问题“下标超出范围”。 我有一个横跨几个团队(作为X轴值)和类别(作为系列)的堆积条形图。 对于每个团队,每个类别都有数字(事件标签状态),并且我想要find哪个团队的票数最多,并使用该信息来格式化我的条形图。 有问题的代码行突出显示。 我已经阅读了许多关于错误9和VBAarrays的线程,但问题仍然存在。 任何人都可以给我一个关于我的代码出了什么问题的提示吗? 我将不胜感激。 Sub ChangeByTeamChartColor() Workbooks.Application.ActiveWorkbook.Sheets("By Team – Incident State").Select ActiveSheet.ChartObjects("By Team Chart").Select Dim s As Series Dim teamTotal() As Integer Dim seriesCount As Integer, seriesIterator As Integer, pointIterater As Integer **ReDim teamTotal(1 To ActiveChart.SeriesCollection(1).Points.Count)** 'Iterate through series and set colors For seriesIterator = 1 To ActiveChart.SeriesCollection.Count Set s = ActiveChart.SeriesCollection(seriesIterator) […]

如何命名QueryTable使用的连接

我目前的代码: ConnectionName = "testCon" With ActiveSheet.QueryTables.Add(Connection:= _ "URL;http://test/test?values=[]~[]~[]~[]~[]~[]~[]~[]~[]~[]~[]~[]~[]~[]~[]~[]~[]~[]~[]~[]~[]~[]~[]~[]~[]~[]~[]~[]~[]~[]~[]~[]~[]&format=csv" _ , Destination:=Range("$D$1")) .Name = ConnectionName End With 这将导致创build一个名为“Connection”的新连接,并且如果该过程重复创build“Connection1”,则会创build“Connection2”等。 有什么办法来命名连接? 。参数似乎是指数据范围名称,而不是连接名称。

VBA导致键入的信息转到不正确的工作表

我正在创build一个电子表格,它在第一个工作表(称为数据库,用于类似于数据库)上创build一个引用号并生成一个新的工作表。 然后在新工作表上给出一个参考编号,以便它们连接在一起。 这是通过在用户窗体上按“新build”来完成的。 一旦完成,它应该转到新创build的工作表,并突出显示单元格C7。 完成此操作后,应closures用户窗体并允许用户在新工作表上键入单元格C7,而无需进一步的步骤。 这工作正常,如果我使用F8来逐步通过过程,但是如果我closures代码窗口,并通过该过程作为用户将运行,因为它应该不工作。 C7突出显示,但是一旦你input了它并按下Enter键进入下面的单元格,你input的内容就会完全消失,而且你在新生成的工作表上input的内容实际上是在另一个工作表上input的。 我有一个单独的工作表,其中包含一个button来打开用户窗体,并在新生成的工作表上input的所有数据错误地转到此工作表。 我的代码在下面,都在UserForm的代码中。 我已经在下面留下了ComboBox代码,但这与新工作表的生成无关。 所有这一切都是列出创build的选项卡,以便用户可以从UserForm中select一个工作表,并直接在那里,而不必滚动横向。 我正在使用Excel 2013.我不是一个VBA老兵,所以任何帮助将不胜感激! 谢谢! Private Sub UserForm_Initialize() Me.ComboBox1.List = Worksheets("Database").Range("A2:A10000").Value End Sub Private Sub CreateNewIdea_Click() CopySheet End Sub Sub CopySheet() Dim LastRow As Long NewReference LastRow = Sheets("Database").Range("A" & Rows.Count).End(xlUp).Row – 1 ReturnValue = LastRow Sheets("Idea Template").Copy After:=Sheets(Sheets.Count) ActiveSheet.Name = LastRow Range("C3").Value = LastRow Me.ComboBox1.List […]

用户forms多页导航

我有一个在Excel中build立的用户窗体,它有大约10个使用MultiPage设置的选项卡。 问题是我没有额外的标签空间,真的很想用友好的导航菜单或工具栏replace标签。 我已经看了微软的工具栏控制,这是接近我在找什么,但我不能改变的高度,下拉必须有箭头点击和nto文本,这是不直观的在我看来。 所以我的问题是,你们有没有熟悉一个更好的多页导航设置,也许使用一种forms的ActiveX?