Tag: vba

将excel切片机设置为今天的date

我有一个date切片机连接到一个pivottable和两个pivotcharts。 我想这个切片机自动过滤到今天的date。 我重新调整我必须使用VBA代码,所以我google了,并从这个答案中find了以下代码: https : //social.msdn.microsoft.com/Forums/office/en-US/2542f1dc-ca62-4ea4- b686-bfa78b53c699 /自动选,最后获得最新限幅器值,当打开工作簿?论坛= exceldev Private Sub Workbook_Open() Dim today As Date today = Now Dim todayString As String todayString = Format$(today, "d mmm yyyy") Dim item As SlicerItem For Each item In ThisWorkbook.SlicerCaches("Date Slicer").SlicerItems If item.Name = todayString Then item.Selected = True Else item.Selected = False End If Next item […]

已启用macros的工作簿保存到错误的文件夹中

当我使用下面的代码来: 保存启用macros的工作簿 与打开的工作簿位于同一个文件夹中 它会以错误的名称在桌面上保存该文件: Sub Save_New_MacroEnabledFile() Dim thisWb As Workbook Set thisWb = ActiveWorkbook Worksheets("Sheet_with_VBA_Button").Activate ActiveWorkbook.SaveAs Filename:=thisWb.Path & Sheets("Sheet_with_NewFile's_Name").Range("A2"), FileFormat:= _ xlOpenXMLWorkbookMacroEnabled, Password:=vbNullString, WriteResPassword:=vbNullString, _ ReadOnlyRecommended:=False, CreateBackup:=False End Sub 我究竟做错了什么?

从计算中排除标题

下面的代码有一个计算问题。 该计算可以找出每列填充的行的百分比。 但是,由于标题,当一个工作表在列中没有值,但有标题显示为50%,这是不正确的。 有没有办法改变这个,所以它不包括在计算中的标题? 这是最好的解决办法吗? Sub Stackage() 'added function to skip corrupt files works! Adding skipped files works.. and do something about 50%. 'changed lrw to long, doesnt skip those files now 🙂 Dim wb As Workbook, fileNames As Object, errCheck As Boolean 'part of loop Dim ws As Worksheet Dim resultSheet As Worksheet Dim […]

添加值时清除剩余的单元格

在Excel中,我有一个约8个产品(8行)的表。 (该表是一个下拉列表,可以按字母sorting)在列表底部添加新产品时,表格会自动展开。 表格的设置如下所示: B栏=产品编号 C列=产品名称 列D =某个值 E栏=某个值 D列和E列通常是空的,我想在整个范围(D1:E8)中只有一个单元格包含任何值。 如果添加新值,则需要清除该范围内的所有其他单元。 这可能通过使用VBAmacros? (如果是的话,那么怎么样?) 例如, D3 =“x”。 在单元格E6中inputstring“x”时,所有其他单元格(包括D3都需要变空)。 我想通过启动一个VBAmacros来做到这一点,所以我可以添加一些额外的行动,需要发生在其中一个产品select与列“D”或E中的“X”。我知道这可以通过一个用户表单也是如此,但宁愿这样做。

将VBA数组转换为VB.NET

我一直在尝试创build一个VB.NET VTSO插件,其中excel列根据列标题值重新排列。 我发现(在线)VBA代码完全相同,但Visual Basic不能识别“Dim v = …”行。 有谁知道我可以如何补救这一点。 Dim v As Object, x As Object, findfield As Object Dim oCell As Excel.Range Dim iNum As Long Dim v = Array("First Name", "Middle Name", "Last Name", "Date of Birth", "Phone Number", "Address", "City", "State", "Postal (ZIP) Code", "Country") For x = LBound(v) To UBound(v) findfield = […]

运行macros后保存并closures工作簿而不提示?

我想通过VBScript保存并closures在其中执行macros(模块:modBex,Sub:Test)的Excel文件。 下面的代码工作正常,除了Excel文件( macro_file.xlsm )没有得到保存。 这是我的代码: Option Explicit Dim xlApp, xlBook Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open("C:\macro_file.xlsm", 0, True) xlApp.Run "modBex.Test" xlApp.DisplayAlerts = False xlBook.Save xlApp.Quit Set xlApp = Nothing Set xlAddin = Nothing Set xlBook = Nothing WScript.Quit

对象variables或块variables未设置 – 错误

我正在运行一个简单的VBA代码如下: Sub TransferData() 'transfer stuff from workbook 1 to workbook 2 Dim strPath1 As String Dim strPath2 As String Dim wbkWorkbook1 As Workbook Dim wbkWorkbook2 As Workbook 'define paths and filenames strPath1 = "C:\blp\data\grid1.xls" strPath2 = "Z:\24AM\Risk Managemen\Risk Management Processes.xlsm" 'copy the values across wbkWorkbook2.Worksheets("FXDUMP").Range("A1:Z2000").Value = wbkWorkbook1.Worksheets("Book1").Range("A1:Z2000").Value 'close the two workbooks wbkWorkbook1.Close (False) wbkWorkbook2.Close (True) […]

汇总表中的列值

我有button,可以添加行,撤消最后添加的行,并删除表中的所有行。 最后,我有一个button,应该在表格的最后添加一行,将上面的列的内容相加。 Private Sub cmbSummarizeColumns_Click() Dim the_sheet As Worksheet Dim table_list_object As ListObject Dim table_object_row As ListRow Set the_sheet = Sheets("Ark1") Set table_list_object = the_sheet.ListObjects(1) Set table_object_row = table_list_object.ListRows.Add table_object_row.Range(1, 1).Value = sumcolumn_1 table_object_row.Range(1, 2).Value = sumcolumn_2 table_object_row.Range(1, 3).Value = sumcolumn_3 End Sub 我不知道如何find1,2和3列的总和,因为我是VBA的新手。 是的,我在这张桌子上有标题。 任何帮助,将不胜感激。

创build一个运行SQL查询的macros,并将数据粘贴到Excel中

所以这里是我的困境我试图创build一个macros,运行一个查询位于单元格(表(“SQL”)。范围(“G1”)),并将该查询中的数据粘贴到表(“数据 “)。范围(” B1" )。 我想到了下面的代码,但我不断收到一个编译错误:用户定义的types没有定义。 请任何有关我在做什么错误的见解将不胜感激。 Sub ConnectSqlServer() Dim conn As ADODB.Connection Dim rs As ADODB.Recordset Dim sConnString As String Dim StrSQL As Variant Application.ScreenUpdating = False Application.Cursor = xlWait Set cnPubs = New ADODB.Connection Set rsPubs = New ADODB.Recordset StrSQL = " SET NOCOUNT ON " ' Create the connection string. sConnString = "Provider=SQLOLEDB; […]

将最后一个logging复制并粘贴到第一个空白行的VBA

我是VBA新手,所以我的查询可能(希望)是一个简单的! 我有一个大型的客户端详细信息数据库,并且希望为工作表编写一个macros,它将查找最后一个非空行,复制行,并将“格式”和“validation”粘贴到第一个空行。 我希望macros能够自动运行(所以即使在添加更多的客户端时,第一个空白行也将始终具有与上述行相同的格式)。 到目前为止,我已经写了这个,当我按下Run Sub它是第一次,但是如果我在最后一个空行添加细节,我得到一个错误。 当我尝试debugging时,突出显示“复制最后一行: Private Sub Worksheet_Change(ByVal Target As Range) 'Copy last row Range("C" & Rows.Count).End(x1Up).Rows.Select Selection.Copy 'Paste format and validation into next blank row Range("C" & Rows.Count).End(x1Up).Offset(1).Rows.Select Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Selection.PasteSpecial Paste:=xlPasteValidation, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False End Sub 另外,我正在运行基于列“C”的代码,因为这是一个必填字段,所以对于任何logging都不会空白。