首页 文章

Excel宏VBA

提问于
浏览
-3

我是vba和excel宏的新手 .

我想创建一个命令按钮,要求用户输入他们是在搜索策略,过程还是表单 . 然后询问用户搜索单词 . 搜索结果将显示为第一个工作表上的列表 .

excel电子表格有9个工作表 . 第一个工作表是搜索功能的介绍 . 其余8个工作表包含2列数据 . 第一列是策略,过程或表单的名称 . 第二列是文档类型(即策略,过程或表单) . 每种类型文档的行数在工作表之间有所不同,因此每种类型文档的每个工作表的定义单元格范围都不同 .

2 回答

  • 1

    我会假设你和很多人一样,对如何开始感到困惑,而不是你试图将这个站点用作免费的宏库 .

    考虑到这一点,我将为您自己提供链接和工具 . 我将讨论用于解决此问题的VBA类型,以便您可以查找可用的术语 .

    首先,您需要一个命令按钮 . 获得此功能的最简单方法是使用功能区上的“开发人员”选项卡 . 你可以了解here . 获得按钮后,您需要为其指定一个宏 . 关于here的更多信息 . 我建议使用Form Control按钮,因为它更容易一些,可以很好地处理你的任务 .

    但是,在分配宏之前,需要构建宏 . Excel-Easy将向您展示如何通过GUI访问VBA编辑器,或者您可以按ALT F11 .

    首先,您需要一个输入框 . 有关该信息,请访问MSDN . 那篇文章也有一些例子可以让它运行起来 .

    您需要在OzGrid将输入分配给这些变量 . 根据你的描述,我会说你想要一个string .

    现在,你需要一个 For Each...Next loop . 像这样的东西:

    For Each Worksheet in ThisWorkBook.Worksheets
        'more code here
    Next Worksheet
    

    为此,您需要了解WorksheetThisWorkBookWorksheets .

    在该循环内部,您需要找到每个工作表的最后一行 . 使用Excel时这是很常见的事情,可以找到很多地方,例如The Spreadsheet Guru . 一旦你想要使用最后一行定义一个范围 . 最后一个链接也可以帮助你 .

    一旦你've got your range, it'的时间使用Find方法 . 该页面上的第一个示例就是您使用该变量,我们将输入设置为较早而不是数字2,您不需要替换它 . 它使用 With statementIf statement (article at Tech On The Net)Do While loopNot operator .

    现在,每次找到它,你都想移动它 . 为了确保你现在想要为你的第一页设置最后一行 . 然后,您可以使用 Value property快速轻松地将数据从原位移动到第一张纸 . 传输值时,请务必在最后一行添加1,否则只会将其传输到最后一行而不是下一行 .

    祝好运!

    注意:我特别提到了我从这些链接获得的一些网站 . 这些都是很好的参考 . 有关更多参考,请查看here . 此外,Google是你的朋友;) . 如果您对此任何部分感到特别困难,您可以随时将其作为该特定问题的新问题发布 .

  • 0

    以下是答案 . 只是想学习VBA

    Sub consolidate()
    Dim x As String
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    Dim m As Integer
    
     x = InputBox("enter form/procedure/process", "enter type", "form")
     'take input string as variable
    
    m = 1
     'this variable  to increment number o row
     For Each Worksheet In ThisWorkbook.Worksheets
       'iterate through all worksheets
    
       k = WorksheetFunction.CountA(Range("A:A"))
       'k is to find last row
    
       For j = 1 To k
         'iterate through all rows
    
        If Range("b" & j).Value = x Then
            Range("A" & j & ":" & "B" & j).Copy
           ' copy the rows
           Worksheets("result").Range("A" & m & ":" & "B" & m).PasteSpecial Paste:=xlPasteValues
        'paste the rows
        m = m + 1
    End If
    Next j
    Worksheet.Activate
    Debug.Print Worksheet.Name
    

    下一个工作表

    结束子

相关问题