Tag: vba

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 […]

函数查找一个值的所有实例并复制,目标单元格不被复制到。

我有2个列,第一个是我想检查的值的列表,第二个是对应于第一列的描述。 第一列可以在第二列中具有不同描述的多个相同值的实例。 我想打印出横向排列的所有不同的描述。 我有这个代码,我可以告诉通过使用debug.print引用正确的单元格,但单元格不会复制到目标单元格。 Function MyFind(lookup As String, FindRng As Range) Dim curcell As Range Dim findcount As Integer Set curcell = Application.Caller findcount = 1 For Each celltocheck In FindRng If celltocheck = lookup Then Debug.Print celltocheck.Address Debug.Print celltocheck.Offset(0, 1).Address Debug.Print celltocheck.Offset(0, 1).Value Debug.Print curcell.Offset(0, findcount).Address celltocheck.Offset(0, 1).Copy Destination:=curcell.Offset(0, findcount) findcount = findcount + […]

用户forms多页导航

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

避免尝试使用VBA和ADO / SQL将NULL值加载到数组中以从Excel表单中提取数据

我有一些简单的代码,将所有的数据从excel工作表加载到数组中,但由于我的源代码表有一些空白列IE:Q到EA是空白列,但我得到错误94正确使用null, A -P和EB-EF有数据。 (可怕的devise为Excel表作为一个表我知道,但我没有这样做)看到因为我不能重新devise表…我怎样才能跳过空白,以避免造成错误,当它们加载到我的arrays? Dim Conn As New ADODB.Connection Dim mrs As New ADODB.Recordset Dim DBPath As String, sconnect As String DBPath = "\\MYPATH\MYFILE.xlsm" sconnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DBPath _ & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";" Conn.Open sconnect sSQLSting = "SELECT * From [log$]" mrs.Open sSQLSting, Conn '=>Load the Data into an array ReturnArray = mrs.GetRows […]

Excel VBA移动所有图像

我在Excel 2016中使用incrementleft来移动名为“Bullet”的所有图像 码: Worksheets("Fighter Game").Shapes("Bullet").IncrementLeft 18.75 但是代码只是移动了第一个图像。 那么我们如何解决这个问题呢?

如果符合条件,写下“串”然后转到下一个

我有这条线: If UCase(Sheets("DebitCard_Check").Range("G" & i).Value) Like "*TAX*" Then GoTo Skip1 我需要的是插入这样的东西: IF condition is met, write "string" Then GoTo Skip1 如果不满足条件,上面应该继续正常执行其余的代码。 我应该如何处理语法? 我尝试了一堆东西。 否则,ElseIF始终将对象填充为: (Sheets("DebitCard_Check").Range("G" & i).Value) = "string" 这给了我很多错误。 没有IF的EndIF期望的语句,对象,行等 *********************************编辑1 *************** ********************* 这是整个代码 – 修改的build议: Sub Categories_Update() Dim lastrow As Long, lastrow2 As Long Dim i As Integer, j As Integer Dim PatternFound […]

VBA – 复杂的文件打开

我目前已经编码如何打开某个文件夹中的所有文件 Dim MyFolder As String Dim MyFile As String MyFolder = "K:\Data Directories\Acquisitions" MyFile = Dir(MyFolder & "\*.xlsx") Do While Len(MyFile) > 0 Workbooks.Open FileName:=MyFolder & "\" & MyFile MyFile = Dir Loop 现在我试图打开具有相同名称的多个文件夹中的所有文件。 例如: Dim MyFolder As String Dim MyFile As String Dim MyFolder2 As String MyFolder = "K:\Data Directories\Acquisitions" MyFolder2 = MyFolder & […]

通过button返回有条件格式化的连续数据

需要VBA使用ECR所在的“位置”返回ECR> 30天。当您按下easybutton时。 程序需要扫描红色单元格并创build一个数组,并将数组放入另一个工作簿。 目前代码: Sub easy_button_2() Dim rw As Long, c As Long, fast As String, X fast = "Y" With Workbooks("ECR Log w_fast.xlsm").Sheets("Sheet 3") With Workbooks("ECR Log w_fast.xlsm").Sheets("Sheet 2") 'clear any previous ECR #s/Location results rw = Application.Match("ECR #s", .Range(.Cells(3, 1), .Cells(Rows.Count, 1).End(xlUp)), 0) With .Range(.Cells(rw + 24, 1), .Cells(Rows.Count, 1).End(xlUp)) .Resize(.Rows.Count, 2).Offset(1, 0).ClearContents […]

循环macros以复制基于条件的单元格并粘贴到另一个表下

我试图解决这个问题一段时间,需要一点帮助。 我想有一个将search控制列D的子,复制列B中对应于列D(减去2列偏移量)中的XXXX的单元格值。 将这个单元格的值粘贴到1,1中的单元格中,从F列的最后一个已用单元格中偏移。然后循环直到没有更多XXXX并转到另一个表单。 你可以请帮忙帮忙找出复制XXXX旁边单元格的缺失部分,并查看macros的其余部分。 任何帮助是极大的赞赏。 Sub Copy() Dim LR As Long Dim i As Long Dim SA As String With ActiveSheet LR = .Range("D" & Rows.Count).End(xlUp).Row For i = 1 To LR If .Range("D" & i) Like "XXXX" Then 'MISSING LINE TO COPY A CELL 2 COLUMNS LEFT FROM XXXX Cells(Rows.Count, "F").End(xlUp).Offset(1, 1) = SA […]

closures工作表之前的消息框,以dislpay所有不受保护的工作表的名称

到目前为止,我已经完成了2个单独的编程。 在closures工作簿之前,会显示一个消息框: Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim answer As String Dim question As String question = "Display all the sheets which are Unprotected" answer = MsgBox(question, vbYesNo) If answer = vbNo Then MsgBox "complete everything and then close" Cancel = True Exit Sub Else ThisWorkbook.Save End If End Sub 另一个显示在所有未受保护的工作表的新工作表“不受保护”中。 Sub UnprotectSheet() Dim ws […]