如何修改以下代码,以便不仅可以复制值而且还可以复制字体样式,如粗体或不粗体。 谢谢 Private Sub CommandButton1_Click() Dim i As Integer Dim a As Integer a = 15 For i = 11 To 32 If Worksheets(1).Cells(i, 3) <> "" Then Worksheets(2).Cells(a, 15) = Worksheets(1).Cells(i, 3).Value Worksheets(2).Cells(a, 17) = Worksheets(1).Cells(i, 5).Value Worksheets(2).Cells(a, 18) = Worksheets(1).Cells(i, 6).Value Worksheets(2).Cells(a, 19) = Worksheets(1).Cells(i, 7).Value Worksheets(2).Cells(a, 20) = Worksheets(1).Cells(i, 8).Value Worksheets(2).Cells(a, 21) […]
我有一个值的数组。 我想使用VBA在Excel单元格中显示这些值作为下拉列表。 这是我的代码。 它显示“ types不匹配错误! ” Dim xlValidateList(6) As Integer xlValidateList(1) = 1 xlValidateList(2) = 2 xlValidateList(3) = 3 xlValidateList(4) = 4 xlValidateList(5) = 5 xlValidateList(6) = 6 With Range("A1").Validation .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:=ValidationList .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" […]
对于粘贴到新工作表的每个单元格,下面的许多代码都是重复的。 作为一个教育练习,谁能告诉我怎样才能缩短呢? Sub RowForTracker() Worksheets.Add(After:=Worksheets(1)).Name = "ForTracker" Sheets("Summary").Range("C2").Copy Sheets("ForTracker").Range("A1").PasteSpecial Paste:=xlPasteValues Sheets("Summary").Range("C6").Copy Sheets("ForTracker").Range("B1").PasteSpecial Paste:=xlPasteValues Sheets("Summary").Range("C8").Copy Sheets("ForTracker").Range("C1").PasteSpecial Paste:=xlPasteValues Sheets("Summary").Range("C3").Copy Sheets("ForTracker").Range("D1").PasteSpecial Paste:=xlPasteValues Sheets("Summary").Range("H8").Copy Sheets("ForTracker").Range("E1").PasteSpecial Paste:=xlPasteValues Sheets("Summary").Range("H9").Copy Sheets("ForTracker").Range("F1").PasteSpecial Paste:=xlPasteValues Sheets("Summary").Range("C5").Copy Sheets("ForTracker").Range("G1").PasteSpecial Paste:=xlPasteValues 结束小组
有谁知道如何使用VBA从SAP Netweaver中提取数据? 我有许多每日报告,需要将数据从SAP导出到Excel并将其格式化为报告。 我已经写了工作的格式化VBAmacros。 我必须手动提取数据并单独运行每个报告macros。 如果我的macros可以进入SAP,那么可以节省很多时间,抓取报告#1的数据,格式化它,获取报告#2的数据等等。 我使用SAP NetWeaver(版本730,版本7300.1.3.1079)。 这些报告只是Excel数据透视表和图表。 谢谢!
我在我的Excel中有一个dynamic定义的命名范围,从表中抓取基于开始date和结束date的数据 =OFFSET(Time!$A$1,IFERROR(MATCH(Date_Range_Start,AllDates,0)-1,MATCH(Date_Range_Start,AllDates)),1,MATCH(Date_Range_End,AllDates)-IFERROR(MATCH(Date_Range_Start,AllDates,0)-1,MATCH(Date_Range_Start,AllDates)),4) 但是,如果date范围在表格中没有数据,则范围不存在(或某物,idk)。 如何在VBA中编写代码来testing这个范围是否存在? 我试过类似的东西 If Not Range("DateRangeData") Is Nothing Then 但我得到“运行时错误1004,对象'_Global'的方法'范围'失败。
从VBA帮助文件: 去声明 无条件地分支到程序中的指定行。 句法 去 _ 行 _ 所需的参数可以是任何行标签或行号。 备注 GoTo只能在其出现的过程中分行。 我的问题是,如何跳转到使用GoTo的行号? (我知道如何跳到标签上。) (注意:我是为了好奇而问这个问题,我不打算以这种方式实际使用GoTo 。)
我目前正在处理一个数据集,它被格式化为一个表格,并带有标题。 我需要做的是循环遍历特定列中的所有单元格并更改内容。 通过对MSDN的研究,我提出了以下for循环 for i = 1 to NumRows Cells(i,23).Value = "PHEV" next i 所以这会改变第23列的所有单元格来读取“PHEV”。 但是,我并没有build立自己的表格,所以我不能保证我感兴趣的专栏是第23栏。 我想实现类似于以下内容的东西: for i = 1 to NumRows Cells(i,[@[columnHeader]]).Value = "PHEV" next i 当然,我知道这个语法是不正确的,但希望它足以说明我的目标。
这样做的意义何在: Application.ScreenUpdating = False Application.DisplayAlerts = False 它真的能节省那么多时间吗?
我想创build一个Sub,基本上允许我使用特定名称来定位Excel表格,然后在底部插入一个新行,并将数据同时添加到该行。 然后退出子。 如果该表只有一行而没有数据,则将该数据添加到该行,然后退出该子。 我怎样才能做到这一点? 我正在用伪代码思考这样的事情: Public Sub addDataToTable(ByVal strTableName as string, ByVal strData as string, ByVal col as integer) ActiveSheet.Table(strTableName).Select If strTableName.Rows.Count = 1 Then strTableName(row, col).Value = strData Else strTable(lastRow, col).Value = strData End if End Sub 这可能是无效的代码,但它应该解释我至less在!
下面的代码试图将选定范围(作为rng传递)粘贴到工作表的末尾。 如果已经存在2行(A1,A2),它就起作用。 Sub copyRow(rng As Range, ws As Worksheet) Dim newRange As Range Set newRange = ws.Range("A1").End(xlDown).Offset(1, 0) rng.Copy newRange.PasteSpecial (xlPasteAll) End Sub 所以,如果A1和A2存在,并且如果你调用这个方法100次,它会在它们之后插入100行。 但是,如果没有行或只有A1,它只是覆盖A2。 我可以看到excel写在同一行(覆盖) 显然,如果xlDown计算的行数less于2行,这个问题就不清楚了。 任何帮助,将不胜感激。