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

复制
相关文章
[038]Binder传输fd细节
最近在研究Linux IO相关的知识,突然想起来Binder机制可以传递fd,但是没有仔细考虑过下面这个问题。
王小二
2020/06/08
2.2K0
[038]Binder传输fd细节
OpenSSL的SSL/BIO_get_fd
只要是用到了OpenSSL,总会碰到让人心塞的事。 这次是SSL_get_fd。我用一种很简单的方式创建了一个SSL对象,直接在这个对象上进行SSL的accept:
星哥玩云
2022/07/03
6870
在 Linux 上用 fd 代替 find
许多 Linux 程序员在其工作中每天都在使用 find 命令。但是 find 给出的文件系统条目是有限的,如果你要进行大量的 find 操作,它甚至不是很快速。因此,我更喜欢使用 Rust 编写的 fd 命令,因为它提供了合理的默认值,适用于大多数使用情况。
用户8639654
2021/09/08
1.3K0
基础IO的理解与操作 - fd
        相信诸位学习过Linux的小伙伴对这句话不陌生吧。Linux下一切皆文件,也就是说在冯诺依曼体系下的任何东西,均可视为文件?为什么能这么说呢?
凯哥Java
2022/12/16
8010
基础IO的理解与操作 - fd
进程间传递文件描述符fd
众所周知,子进程会继承父进程已经打开的文件描述符fd,但是fork之后的是不会被继承的,这个时候是否无能无力了?答应是NO。Linux提供了一个系统调用sendmsg,借助它,可以实现进程间传递文件描述符fd,而且不仅限于父进程到子进程。sendmsg函数的原型如下:
一见
2018/08/10
4K0
Linux下 fd_set 结构
fd_set是一种数据类型,在select函数中包含了3个参数,就是这个fd_set类型,fd_set也是理解select模型的关键,关于select的具体说明,可以参考之前的文章嵌入式Linux编程之select使用总结。
随心助手
2021/12/31
2.7K0
Linux下 fd_set 结构
fd安装教程_ipfs节点搭建
以上fastdfs源码都是纯C语言编写的,因此需要下载gcc-c++编译器对源码进行编译
全栈程序员站长
2022/11/01
1.9K0
fd安装教程_ipfs节点搭建
【每日一库】fd - 文件搜索神器
find 命令,是我们 Linuxer 经常会用到的命令行工具之一,频率可能会比昨天介绍的 grep/ripgrep 工具稍微低一点。它的作用是在文件系统目录中搜索符合指定文件名模式的文件。这里介绍的 fd 是 find 的 Rust 替代实现。目前在 github 上 star 数量接近 10000。
MikeLoveRust
2019/07/09
9340
【每日一库】fd - 文件搜索神器
Fd.Service 轻量级WebApi框架
News December 06 2014: Version 1.0.0.8 Add Register Route  Configuration iis 7 Integrated Mode: <system.webServer> <modules> <add name="UrlRoutingModule" type="FD.Service.UrlRoutingModule,FD.Service"/> </modules> </system.webServer> iis 6 <sys
蘑菇先生
2018/05/21
7570
在 Linux 上用 fd 代替 find
许多 Linux 程序员在其工作中每天都在使用 find 命令。但是 find 给出的文件系统条目是有限的,如果你要进行大量的 find 操作,它甚至不是很快速。因此,我更喜欢使用 Rust 编写的 fd 命令,因为它提供了合理的默认值,适用于大多数使用情况。
用户1091747
2021/06/24
1.4K0
类Unix系统中,fd指的啥?
fd 是(file descriptor)即文件描述符,这种一般是BSD Socket的用法,用在Unix/Linux系统上。fd全称是file descriptor,是进程独有的文件描述符表的索引。
joshua317
2021/09/01
1.5K0
类Unix系统中,fd指的啥?
Dockerd资源泄露系列 - 内存&FD泄露 - 1
线上部分宿主机dockerd占用内存过大,有的甚至超过100G,而整个宿主上的容器使用的内存还不如dockerd一个进程使用的多,现在的处理办法是故障自愈,检测到dockerd使用内存超过10G后会设置live-restore,然后重启dockerd,而不影响正常运行的容器,但是重启后还一直存在内存泄露的问题。可以总结为两类内存泄露情况:没有设置live-restore: true的和设置了live-restore: true且重启过dockerd的,这里是针对后者的排查,因为线上默认dockerd没有开启debug模式,要想排查前者的问题,就需要重启docker,又因为没有配置live-restore: true,就会影响到正在运行的容器。
我是阳明
2021/04/26
2.5K0
Dockerd资源泄露系列 - 内存&FD泄露 - 1
Deno TCP Echo Server 是怎么运行的
在 “了不起的 Deno 入门教程” 这篇文章中,我们介绍了如何使用 Deno 搭建一个简单的 TCP echo server,本文将使用该示例来探究 TCP echo server 是怎么运行的?前方高能,请小伙伴们深吸一口气做好准备。
山月
2020/05/26
1.1K0
Deno TCP Echo Server 是怎么运行的
CAN与CAN FD通信之间存在的问题
因为受制于产品的稳定性考验,改造成本等问题,没法快速全面普及CAN FD。另外,在2012年底提出CAN FD到2015年中成为ISO CAN FD。
不脱发的程序猿
2022/10/31
1.3K0
CAN与CAN FD通信之间存在的问题
套接字
版权声明:本文为博主原创文章,转载请注明博客地址: https://blog.csdn.net/zy010101/article/details/88673990
zy010101
2019/05/25
1.3K0
Nginx(6):nginx master 和 worker 之间的通信
先了解一下 ngx_channel_t,有点重要哈: master进程每次发送给worker进程的指令用如下的一个结构来完成封装
看、未来
2021/10/09
9310
Nginx(6):nginx master 和 worker 之间的通信
在 Linux 上用 fd 代替 find命令
许多 Linux 程序员在其工作中每天都在使用 find 命令。但是 find 给出的文件系统条目是有限的,如果你要进行大量的 find 操作,它甚至不是很快速。因此,我更喜欢使用 Rust 编写的 fd 命令,因为它提供了合理的默认值,适用于大多数使用情况。
用户1685462
2021/09/13
1.7K0
一文搞懂CAN FD总线协议帧格式
假期更新了一文搞懂CAN总线协议帧格式,CAN FD总线协议怎能错过?本篇博文将讲解CAN FD总线协议帧格式。
不脱发的程序猿
2022/10/28
4.5K0
好用的 Linux \ Mac 搜索命令 fd 命令用法
版权声明:本文为 FengCms FungLeo 原创文章,允许转载,但转载必须注明出处并附带首发链接 https://blog.csdn.net/FungLeo/article/details/80760746
FungLeo
2019/05/26
2.4K0
多个套接字可以绑定同一个端口吗
在日常的开发过程中,经常会遇到端口占用冲突的问题。那是不是不同的进程不能同时监听同一个端口呢?这个小节就来介绍 SO_REUSEPORT 选项相关的内容。
挖坑的张师傅
2022/05/13
2.9K0
多个套接字可以绑定同一个端口吗

相似问题

boost asio套接字在/proc/pid/fd下继续弹出

12

是否可以删除/proc/<pid>/fd中的fd链接?

12

读取/proc/<pid>/fd/<fd>而不完全根访问

16

获取套接字fd的所有者PID

10

标准输出的Linux proc/pid/fd是11?

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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