Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >VBA不将值粘贴到新工作簿工作表中

VBA不将值粘贴到新工作簿工作表中
EN

Stack Overflow用户
提问于 2020-09-22 16:48:16
回答 1查看 37关注 0票数 0

我创建了这个脚本,它将条件格式应用于三个数据透视表,并尝试将每个表的结果保存到新工作簿中它自己的选项卡中。

下面是我的代码:

代码语言:javascript
运行
AI代码解释
复制
Sub conditional_formatting():

    ' Set dimensions
    Dim i As Long
    Dim rowCount As Long
    Dim numOpen As Range
    Dim Ws As Worksheet
    Dim xWs1, xWs2, xWs3 As Worksheet
    Dim NewBook As Workbook
    Dim Nbs1, Nbs2, Nbs3 As Worksheet
    
    Set NewBook = Workbooks.Add
    With NewBook
      Set Nbs1 = NewBook.Sheets("Sheet1")
      NewBook.Sheets.Add.Name = "Sheet2"
      Set Nbs2 = NewBook.Sheets("Sheet2")
      NewBook.Sheets.Add.Name = "Sheet3"
      Set Nbs3 = NewBook.Sheets("Sheet3")

   End With

    ' loop through final report sheets
    For Each Ws In ActiveWorkbook.Worksheets
    
        ' only loop through lic, loss loc, and reallocate reports
        If Ws.Index > 4 And Ws.Index < 8 Then
            
            If Ws.Index = 5 Then
            
            ' get the row number of the last row with data
            rowCount = Cells(Rows.Count, "L").End(xlUp).Row
        
                For i = 14 To rowCount
            
                    ' Store number of weeks open in working cell
                      Set numOpen = Range("L" & i)
            
                    ' Apply RAG conditional formatting
                     Select Case numOpen.Value
                       Case Is > 4
                          numOpen.Interior.ColorIndex = 3
                       Case Is > 2
                          numOpen.Interior.ColorIndex = 44
                       Case Else
                          numOpen.Interior.ColorIndex = 43
                     End Select
            
                Next i
        
           Ws.Range("A13:" & "L" & rowCount).Copy
           Nbs1.Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
                SkipBlanks:=False, Transpose:=False
                Nbs1.Name = "(lic)"
        
            ElseIf Ws.Index = 6 Then
            
            ' get the row number of the last row with data
            rowCount = Cells(Rows.Count, "L").End(xlUp).Row
            
                For i = 11 To rowCount
            
                    ' Store number of weeks open in working cell
                      Set numOpen = Range("L" & i)
            
                    ' Apply RAG conditional formatting
                     Select Case numOpen.Value
                       Case Is > 4
                          numOpen.Interior.ColorIndex = 3
                       Case Is > 2
                          numOpen.Interior.ColorIndex = 44
                       Case Else
                          numOpen.Interior.ColorIndex = 43
                     End Select
            
                Next i
            
              Ws.Range("A10:" & "L" & rowCount).Copy
              Nbs2.Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
                SkipBlanks:=False, Transpose:=False
                Nbs2.Name = "(loss loc)"
     
            Else
            
            ' get the row number of the last row with data
            rowCount = Cells(Rows.Count, "L").End(xlUp).Row
            
                For i = 13 To rowCount
            
                    ' Store number of weeks open in working cell
                      Set numOpen = Range("L" & i)
            
                    ' Apply RAG conditional formatting
                     Select Case numOpen.Value
                       Case Is > 4
                          numOpen.Interior.ColorIndex = 3
                       Case Is > 2
                          numOpen.Interior.ColorIndex = 44
                       Case Else
                          numOpen.Interior.ColorIndex = 43
                     End Select
            
                Next i
             Ws.Range("A12:" & "L" & rowCount).Copy
             Nbs3.Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
                SkipBlanks:=False, Transpose:=False
                Nbs3.Name = "(reallocate)"
                     
            End If

        End If
        
    Next Ws

  
NewBook.SaveAs Filename:="C:\Test1"

MsgBox ("Done")
    
End Sub

脚本没有给我任何错误,并且它成功地应用了条件格式,除了创建正确的选项卡之外,还重命名了它们。

由于某些原因,它实际上并没有在新工作簿中粘贴任何值。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-22 17:38:01

我会尝试将公共代码提取到单独的subs中。

其中包括一些其他修复,例如使用工作表对象限定每个范围。

代码语言:javascript
运行
AI代码解释
复制
Sub conditional_formatting():

    ' Set dimensions
    Dim rowCount As Long
    Dim Ws As Worksheet
    Dim NewBook As Workbook
    Dim Nbs1 As Worksheet, Nbs2 As Worksheet, Nbs3 As Worksheet
    Dim wbSrc As Workbook
    
    Set wbSrc = ActiveWorkbook '<<<<remember this workbook
    
    Set NewBook = Workbooks.Add
    With NewBook
        Set Nbs1 = .Sheets("Sheet1")
        .Sheets.Add.Name = "Sheet2" '<< use your With here...
        Set Nbs2 = .Sheets("Sheet2")
        .Sheets.Add.Name = "Sheet3"
        Set Nbs3 = .Sheets("Sheet3")
    End With

    ' loop through final report sheets
    For Each Ws In wbSrc.Worksheets
        
        rowCount = Ws.Cells(Ws.Rows.Count, "L").End(xlUp).Row 'only need this once
        
        If Ws.Index = 5 Then
            FormatRange Ws.Range("L14:L" & rowCount)
            CopyValues Ws.Range("A13:L" & rowCount), Nbs1.Range("A1")
            Nbs1.Name = "(lic)"
        ElseIf Ws.Index = 6 Then
            FormatRange Ws.Range("L11:L" & rowCount)
            CopyValues Ws.Range("A10:L" & rowCount), Nbs2.Range("A1")
            Nbs2.Name = "(loss loc)"
        ElseIf Ws.Index = 7 Then
            FormatRange Ws.Range("L13:L" & rowCount)
            CopyValues Ws.Range("A12:L" & rowCount), Nbs3.Range("A1")
            Nbs3.Name = "(reallocate)"
        End If
    
    Next Ws

    NewBook.SaveAs Filename:="C:\Test1"
    MsgBox ("Done")
    
End Sub

'copy values from rngFrom into rngTo (resizing as necessary)
Sub CopyValues(rngFrom As Range, rngTo As Range)
    With rngFrom
        rngTo.Cells(1).Resize(.Rows.Count, .Columns.Count).Value = .Value
    End With
End Sub

'loop over and format a range according to cell values
Sub FormatRange(rng As Range)
    Dim c As Range
    For Each c In rng.Cells
        Select Case c.Value
          Case Is > 4
             c.Interior.ColorIndex = 3
          Case Is > 2
             c.Interior.ColorIndex = 44
          Case Else
             c.Interior.ColorIndex = 43
        End Select
    Next c
End Sub
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64014250

复制
相关文章
MUI 在上拉加载的容器中手机无法触发click事件
问题:我有一个list,在mui  上拉加载和下拉刷新的容器里。在电脑浏览器里可以触发点击事件,手机无法触发。
星宇大前端
2019/01/15
2K0
使用k8s容器钩子触发事件
原文: http://yunke.science/2018/04/15/k8s-hook/
sunsky
2020/08/20
1.7K0
使用k8s容器钩子触发事件
使用eventBus事件的重复触发事件问题的解决
在单页应用中,在 A 页面中触发事件,然后在 B 页面中对这个事件进行响应是一个很常见的需求,那么当有这种需求的时候要怎么实现呢。有两种方案可以实现:
用户2305169
2018/07/24
3.7K0
Jenkins触发构建--事件触发
事件触发就是发生了某个事件就触发pipeline执行,这个事件可以是你能想到的任何事件,比如手动在界面上触发、其它job主动触发、HTTP API Webhook触发等。
陈不成i
2021/06/02
5.9K0
onbeforeunload事件被a链接触发的问题
onbeforeunload本身并非W3C DOM-Event标准事件,只不过在很多时候国内的流氓做法就是离开页面,直接弹出收藏本网页的提示(虽然我很讨厌这种做法,但事实上很多公司一直都在这样默默地强奸用户…)
meteoric
2018/11/16
2K0
10.下拉刷新、加载更多、标记已读、轮播条、缓存
getMeasuredHeight():获取测量完的高度,只要在onMeasure方法执行完,就可以用
六月的雨
2022/01/12
8030
10.下拉刷新、加载更多、标记已读、轮播条、缓存
10.下拉刷新、加载更多、标记已读、轮播条、缓存
下拉刷新、加载更多、标记已读、轮播条、缓存 下拉刷新------- 1.addHeaderView必须在setAdapter之前调用 2.将paddingTop设置一个headerView高度的负值去隐藏它 getHeight()和getMeasuredHeight()的区别: getMeasuredHeight():获取测量完的高度,只要在onMeasure方法执行完,就可以用                    它获取到宽高,在自定义控件内部多使用这个 使用view.measure(0
六月的雨
2018/05/14
1.1K0
代码触发,手动触发touchstart事件,touch事件,click事件,自定义事件
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/150775.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/06
5K0
WPF继续响应被标记为已处理事件的方法
WPF中在冒泡事件或者隧道事件会随其层间关系在visual tree上层层传递,但是,某些事件传递到某些控件是即会”终止“(不再响应相应的注册事件),给人一种事件终结者的印象。例如:textbox对mousdown事件。
zls365
2021/03/16
9740
WPF 触屏事件后触发鼠标事件的问题及 DataGrid 误触问题
这个是 WPF 已知的问题,网络上也有一些讨论,但是没有一个完美的方法来解决。本文也就是讲解其中的一种方法,亲测可行。
独立观察员
2022/12/06
2.8K0
WPF 触屏事件后触发鼠标事件的问题及 DataGrid 误触问题
onbeforeunload事件_pageload事件何时触发
注意:为了防止不需要的弹出窗口,浏览器可能不会显示在beforeunload事件处理程序中创建的提示,除非页面已与之交互,甚至根本不显示它们。
全栈程序员站长
2022/11/03
3K0
vue 加载页面时触发时间_Vue 刷新页面时会触发事件吗「建议收藏」
使用localstorage做本地存储,然后我想在刷新页面或者离开页面的调用localstorage方法
全栈程序员站长
2022/09/27
1.7K0
aos 事件触发失败
项目中遇到这个问题,网页往下滑动时加载 aos 事件触发不了,原因也很简单,因为 aos.js 是在页面加载时获取页面高度从而绑定一些事件进去,但是如果这个文件加载速度比框架加载的快,会导致两者高度不一致,从而动画效果触发失败。
子舒
2023/08/23
4090
专属| 谷歌提前关闭Google+
据外媒报道,研究人员发现,全球超41.5万台路由器感染了旨在窃取路由器计算能力并偷偷挖掘加密货币的恶意软件。影响最为严重的是MikroTik路由器,有记录显示,针对该品牌的一系列加密攻击始于今年8月,有20多万台设备被感染。尽管攻击者过去倾向于使用CoinHive–一种用于面向隐私加密货币Monero (XMR)的挖掘软件,但研究人员注意到,攻击者已经开始转向了其他挖掘软件,“CoinHive、Omine和CoinImp是使用最多的服务。
漏斗社区
2018/12/27
7180
专属| 谷歌提前关闭Google+
js触发全屏事件
让用户端JS触发指的就是让用JS监听用户的操作事件,通过JS程序去实现F11全屏。这个事件可以是一个按钮的点击事件,当然也可以是键盘事件,比如用户按下F11。     1.F11键盘事件触发   当用户按下F11事件,浏览器为触发自身全屏功能,这个过程我们一般是不可控制的,即使是监听了F11的键盘事件,退出全屏的时候,我们也捕捉不到退出全屏触发的事件。所以,我们就用程序自己去实现F11的功能,首先需要禁用浏览器默认的事件动作。
山河木马
2019/03/05
16.1K0
实现ApplicationListener<ContextRefreshedEvent> 事件被触发两次的问题
原因是: 一个项目中引入Spring和SpringMVC这两个框架,那么它其实就是两个容器,Spring是父容器,SpringMVC是其子容器,并且在Spring父容器中注册的Bean对于SpringMVC容器中是可见的,而在SpringMVC容器中注册的Bean对于Spring父容器中是不可见的,也就是子容器可以看见父容器中的注册的Bean,反之就不行。详见
名字是乱打的
2021/12/24
9620
Jenkins 实现Gitlab事件自动触发Jenkins构建及钉钉消息推送
Generic Webhook Trigger Plugin 1.72(Jenkins插件)
授客
2021/04/15
2.5K0
Jenkins 实现Gitlab事件自动触发Jenkins构建及钉钉消息推送
Qt键盘事件(二)——长按按键反复触发event事件问题解决
Qt键盘事件可能会遇到无法响应方向键、一直产生按下或者释放事件等问题,如何解决呢?Jungle笔记为您解答。
用户6557940
2022/07/24
4.4K0
Qt键盘事件(二)——长按按键反复触发event事件问题解决
点击加载更多

相似问题

Google标记管理器-从rest触发事件

21

Google标记管理器不触发事件触发器

15

Google标记管理器在Firefox中未触发事件

17

Google标记管理器单击id事件未触发

13

在div加载之前触发事件。

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文