首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >VBA Excel -宏范围语法问题

VBA Excel -宏范围语法问题
EN

Stack Overflow用户
提问于 2020-04-08 21:10:47
回答 1查看 53关注 0票数 0

所以我一直在努力让这个电子表格正常工作。基本上,我是按Techs名称(H列)对数据进行预排序的。然后,我想将分配给他们的每个设备复制到带有其名称的单独工作表中。我似乎找不出复制行的范围语法。我有两个计数器在运行。Counter用于比较每行,TechCount用于移位复制范围的起始点。我完全是一个新手,所以我相信有一种更有效的方法可以做到这一点。

示例:Data Set

代码语言:javascript
运行
AI代码解释
复制
    'Create individual Worksheets for Techs with Primary & Secondary Assignments
Dim ws As Worksheet
Dim TechNm As String
Dim wsNM As String
Dim counter As Integer
Dim TechCount As Integer


    ActiveWorkbook.Worksheets("DATA SET").Select
    TechNm = ActiveWorkbook.Sheets("DATA SET").Range("H2").Value
    counter = 0
    TechCount = 0


Do

        If IsEmpty(Range("H2").Value) = True Then
                    Exit Do
        End If

        If TechNm = ActiveWorkbook.Sheets("DATA SET").Range("H2").Offset(counter + 1, 0).Value Then
            counter = counter + 1

        ElseIf TechNm <> ActiveWorkbook.Sheets("DATA SET").Range("H2").Offset(counter + 1, 0).Value Then

                 'Create Worksheet with Tech Name
                wsNM = ActiveWorkbook.Sheets("DATA SET").Range("H2")
                Set ws = ActiveWorkbook.Sheets.Add(after:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count))
                ws.Name = wsNM

                 'Copy Header Row to new worksheet
                ActiveWorkbook.Sheets("DATA SET").Rows(1).EntireRow.Copy ActiveWorkbook.Sheets(wsNM).Range("A1")

                 'Move Tech assignments to new sheet 
                **ActiveWorkbook.Sheets("DATA SET").Range("A" & TechCount & ":A" & counter).EntireRow.Copy ActiveWorkbook.Sheets(wsNM).Range("A2")**
                    Cells.Select
                    With Selection
                        .HorizontalAlignment = xlLeft
                        .VerticalAlignment = xlBottom
                        .WrapText = False
                        .Orientation = 0
                        .AddIndent = False
                        .IndentLevel = 0
                        .ShrinkToFit = False
                        .ReadingOrder = xlContext
                        .MergeCells = False
                        .EntireColumn.AutoFit
                    End With

                    Rows(1).EntireColumn.AutoFilter
                    Range("A2").Select
                    Application.CutCopyMode = False

                'Change Do Loop Parameters
                ActiveWorkbook.Worksheets("DATA SET").Select
                counter = counter + 1
                TechCount = counter
                TechNm = ActiveWorkbook.Sheets("DATA SET").Range("H2").Offset(counter, 0).Value


        End If
Loop


ActiveWorkbook.Worksheets("TECH ASSIGNMENTS").Select

End Sub
EN

回答 1

Stack Overflow用户

发布于 2020-04-09 00:56:17

避免选择和使用变量。

代码语言:javascript
运行
AI代码解释
复制
Sub test()
    'Create individual Worksheets for Techs with Primary & Secondary Assignments
Dim Ws As Worksheet, myWs As Worksheet
Dim TechNm As String
Dim wsNM As String
Dim counter As Integer
Dim TechCount As Integer
Dim Wb As Workbook

    'ActiveWorkbook.Worksheets("DATA SET").Select
    Set Wb = ActiveWorkbook
    Set myWs = Wb.Worksheets("DATA SET")
    'TechNm = ActiveWorkbook.Sheets("DATA SET").Range("H2").Value
    TechNm = myWs.Range("H2").Value
    counter = 0
    TechCount = 0


Do
    With myWs
        'If IsEmpty(Range("H2").Value) = True Then
        If IsEmpty(.Range("H2").Value) = True Then
                    Exit Do
        End If

        'If TechNm = ActiveWorkbook.Sheets("DATA SET").Range("H2").Offset(counter + 1, 0).Value Then
        If TechNm = .Range("H2").Offset(counter + 1, 0).Value Then
            counter = counter + 1

        'ElseIf TechNm <> ActiveWorkbook.Sheets("DATA SET").Range("H2").Offset(counter + 1, 0).Value Then
        ElseIf TechNm <> .Range("H2").Offset(counter + 1, 0).Value Then

                 'Create Worksheet with Tech Name
                wsNM = .Range("H2")
                Set Ws = Wb.Sheets.Add(after:=Wb.Sheets(Wb.Sheets.Count))
                Ws.Name = wsNM

                 'Copy Header Row to new worksheet
                'ActiveWorkbook.Sheets("DATA SET").Rows(1).EntireRow.Copy ActiveWorkbook.Sheets(wsNM).Range("A1")
                .Rows(1).EntireRow.Copy Ws.Range("A1")
                 'Move Tech assignments to new sheet
                **ActiveWorkbook.Sheets("DATA SET").Range("A" & TechCount & ":A" & counter).EntireRow.Copy ActiveWorkbook.Sheets(wsNM).Range("A2")**
                .Range("A" & TechCount & ":A" & counter).EntireRow.Copy Ws.Range("A2")
                With Ws.Cells
                    'Cells.Select
                    'With Selection
                        .HorizontalAlignment = xlLeft
                        .VerticalAlignment = xlBottom
                        .WrapText = False
                        .Orientation = 0
                        .AddIndent = False
                        .IndentLevel = 0
                        .ShrinkToFit = False
                        .ReadingOrder = xlContext
                        .MergeCells = False
                        .EntireColumn.AutoFit


                    .Rows(1).EntireColumn.AutoFilter
                    '.Range("A2").Select
                    Application.CutCopyMode = False
                End With
                'Change Do Loop Parameters
                'ActiveWorkbook.Worksheets("DATA SET").Select
                counter = counter + 1
                TechCount = counter
                TechNm = .Range("H2").Offset(counter, 0).Value
        End If
    End With
Loop


'ActiveWorkbook.Worksheets("TECH ASSIGNMENTS").Select
Wb.Worksheets("TECH ASSIGNMENTS").Activate
End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61110095

复制
相关文章
Excel之VBA简单宏编程
excel是一款很经典的数据分析的工具,里面包含了很多内置函数,但实际情况有时却复杂得多,而excel的宏编程提供了自定义函数的功能,正好有老师需要帮忙做一些数据分析,就学习了一下,下面是我的学习笔记。本人使用的是excel2013。有出入的地方可以参考。
全栈程序员站长
2022/07/01
3.5K0
Excel之VBA简单宏编程
ChatGPT与Excel结合_编写VBA宏
⭐Excel VBA宏(Visual Basic for Applications)是一种用于在Microsoft Excel中自动化和扩展功能的编程语言。VBA允许用户编写自定义的脚本或宏,以便通过执行一系列指令来自动完成特定任务。
天天Lotay
2023/10/15
7030
ChatGPT与Excel结合_编写VBA宏
ChatGPT与Excel结合_编写VBA宏
⭐Excel VBA宏(Visual Basic for Applications)是一种用于在Microsoft Excel中自动化和扩展功能的编程语言。VBA允许用户编写自定义的脚本或宏,以便通过执行一系列指令来自动完成特定任务。
天天Lotay
2023/10/15
5760
ChatGPT与Excel结合_编写VBA宏
Excel VBA宏编程入门(五)——用户交互[通俗易懂]
VBA编程中,为了程序的灵活性,有时候需要用到用户交互操作,例如让用户选择一个文件夹,用户选择一个单元格等等。本文将介绍一些常用的用户交互操作的实现
全栈程序员站长
2022/09/05
1.4K0
VBA实战技巧32:安装Excel加载宏
我们知道,有多种方法可以进入“Excel加载宏”对话框。最简单的就是,单击功能区“开发工具”选项卡“加载项”组中的“Excel加载项”,即可打开如下图1所示的的“加载宏”对话框。
fanjy
2021/08/31
5.5K0
VBA实战技巧32:安装Excel加载宏
VBA实战技巧31:彻底移除Excel加载宏
有时候,当我们不再需要使用某加载宏时,我们可能会直接从系统文件中将该加载宏文件删除。如果这样的话,那么每当你启动Excel时,Excel都会给出一条如下图1所示的消息。
fanjy
2021/08/31
3.1K0
VBA实战技巧31:彻底移除Excel加载宏
Excel VBA SQL Join Syntax ErrorExcel VBA SQL 连接语法错误
【问题标题】:Excel VBA SQL Join Syntax ErrorExcel VBA SQL 连接语法错误 【发布时间】:2015-09-24 00:08:56 【问题描述】:
matinal
2023/10/13
2790
探索VBA代码编辑器——《Excel VBA宏编程》系列讲座2
Excel已经为我们准备好了编写VBA代码的编辑器,让我们非常方便地编写、运行和调试、保存VBA代码。
fanjy
2022/06/04
3.9K0
探索VBA代码编辑器——《Excel VBA宏编程》系列讲座2
Excel与Python:将VBA宏转换成Python
在本文的示例中,将从头开始创建两个表:乘法表和随机数表,然后对这些数字应用条件格式。
fanjy
2023/08/29
9190
Excel与Python:将VBA宏转换成Python
Excel VBA常用功能加载宏——工作表隐藏
有些时候制作的表格,一些基础的设置数据可能不希望使用者看到并被修改掉,这个时候一般可能会选择把表格隐藏起来。
xyj
2020/07/28
2.9K0
Excel VBA常用功能加载宏——工作表隐藏
Jupyter Notebooks嵌入Excel并使用Python替代VBA宏
以前,Excel和Python Jupyter Notebook之间我们只能选择一个。但是现在随着PyXLL-Jupyter软件包的推出,可以将两者一起使用。
deephub
2020/12/28
6.4K0
Jupyter Notebooks嵌入Excel并使用Python替代VBA宏
文科生也能学会的Excel VBA 宏编程入门
VBA编程是Office系列软件自带的编程功能,也就是说不只是Excel,Word和PPT也能进行VBA编程。而“宏”可以理解为一组自动化程序,执行一个宏就能执行其对应的一系列操作。创建宏主要有两种方法,一种是录制宏,也就是将人的一些操作录下来,需要的时候执行宏就可以自动重复这些操作;另一种就是本文要介绍的,通过VBA编程来自己写一个宏。
全栈程序员站长
2022/06/28
5.8K0
文科生也能学会的Excel VBA 宏编程入门
excel宏 java,Microsoft Excel宏运行Java程序
大家好,又见面了,我是你们的朋友全栈君。 I have learnt to read and write an Excel file using a Java program with the he
全栈程序员站长
2022/09/07
7930
Excel VBA编程
在Excel中,数据只有文本,数值,日期值,逻辑值和错误值五种类型。但是在VBA中,数据类型跟Excel不完全相同。根据数据的特点,VBA将数据分为布尔型(boolean),字节型(byte),整数型(integer),单精度浮点型(single),双精度浮点型(double),货币型(currency),小数型(decimal),字符串型(string),日期型(date),对象型等等
全栈程序员站长
2022/08/11
45.9K0
Excel VBA编程
Excel VBA事件
在Excel VBA里提供了接口,在发生这些事件之前或者之后,让使用者可以设置一段运行的程序。
xyj
2020/07/28
1.5K0
Excel VBA事件
excel vba 解密
大家好,又见面了,我是你们的朋友全栈君。Private Sub VBAPassword() ‘你要解保护的Excel文件路径 Filename = Application.GetOpenFilename(“Excel文件(*.xls & *.xla & *.xlt),*.xls;*.xla;*.xlt”, , “VBA激活成功教程”) If Dir(Filename) = “” Then MsgBox “没找到相关文件,清重新设置。” Exit Sub Else FileCopy Filename, Filename & “.bak” ‘备份文件。 End If Dim GetData As String * 5 Open Filename For Binary As #1 Dim CMGs As Long Dim DPBo As Long For i = 1 To LOF(1) Get #1, i, GetData If GetData = “CMG=””” Then CMGs = i If GetData = “[Host” Then DPBo = i – 2: Exit For Next If CMGs = 0 Then MsgBox “请先对VBA编码设置一个保护密码…”, 32, “提示” Exit Sub End If
全栈程序员站长
2022/09/15
9420
编写Excel宏[通俗易懂]
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
全栈程序员站长
2022/09/06
1.7K0
编写Excel宏[通俗易懂]
VBA: 提高 VBA 宏性能的 8 个技巧
文章背景: 作为VBA新手,在运行自己编写的代码时,可能会遇到VBA运行缓慢的问题。可以采取以下8个措施来提高运行效率。
Exploring
2022/12/18
3.8K0
VBA:  提高 VBA 宏性能的 8 个技巧
excel批量导入图片 宏_怎么启用excel的宏
  图片格式规范:C盘的picture文件夹,放100张有序命名的图片,即1.jpg,2.jpg,3.jpg…100.jpg
全栈程序员站长
2022/09/21
2.1K0
excel批量导入图片 宏_怎么启用excel的宏
Excel VBA学习
学习一下,记录一下,资料来自于网络 网络代码收集一: Sub test() Dim arr, brr, i&, r&, k Set d = CreateObject("scripting.dictionary") Set d1 = CreateObject("scripting.dictionary") With Sheet1 r = .Cells(Rows.Count, 1).End(3).Row For i = 2 To r
哆哆Excel
2022/10/31
2K0

相似问题

VBA EXCEL范围语法

23

Excel VBA宏:复制范围

11

Excel VBA问题-复制索引范围的语法

19

Excel VBA宏问题

42

VBA范围语法问题

25
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文