- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个惯例,在日历中填满下周每一天商品市场的所有重要事件。我在页面上布置了一个日历网格,并在每天列中每天有 10 个命名单元格,即 Monday1、Monday2 等(目前每天最多只有 10 个单元格,即 Monday10)。顺便说一句,这些单元格有 2 个单元格宽和 2 个单元格深。很多时候,某一天有超过 10 个事件。我正在尝试测试命名范围以查看它是否存在,如果不存在,则复制最后一个命名范围单元格的格式,并将该单元格命名为该系列中的下一个名称。
我对上述问题只有两个问题,首先也是最重要的是如何测试以确定命名范围的名称是否已经存在。我目前正在迭代 ThisWorkbook.Names 的整个列表,其中包含数千个命名范围。由于在生成日历时此迭代可能会运行超过 100 次,因此速度非常慢(正如预期的那样)。有没有更好、更快的方法来检查名称是否已作为命名范围存在?
第二个问题是如何复制 4 个单元格、合并单元格的格式,因为地址始终仅显示为左上角单元格,因此偏移范围无法正常工作。我设法让这段代码至少为该列中的下一个合并单元格组提供正确的范围
Set cCell = Range("Thursday" & CStr(y))
'even tho cCell is a 4 cell merged cell, cCell.Address returns the address of top left cell
Set destRange = Range(cCell.Address & ":" & cCell.offset(2, 0).offset(0, 1).Address)
录制宏以向下拖动格式,显示此代码。
Range("G22:H23").Select
Selection.AutoFill Destination:=Range("G22:H25"), Type:=xlFillFormats
Range("G22:H25").Select
由于 Range("G22:H23") 与 cCell 相同,并且 Range("G22:H25") 与 destRange 相同。下面的代码应该可以工作,但是却不能。
Set cCell = Range("Thursday" & CStr(y))
Set destRange = Range(cCell.Address & ":" & cCell.offset(2, 0).offset(0, 1).Address)
cCell.AutoFill Destination:=destRange, Type:=xlFillFormats
Application.CutCopyMode = False
cCell.offset(1, 0).Name = rangeName
仅供引用,如果我选择 cCell 并使用 Selection.AutoFill 也不起作用。
关于如何在需要时将单元格格式复制到列中,一次一个单元格,有什么想法吗?
更新:
现在,这适用于将格式从一个合并单元格复制到另一个相同大小的单元格。由于某种原因,将 destRange 设置为整个范围(宏记录器显示的复制单元格和粘贴单元整个范围)不起作用,但将 destRange 设置为需要格式化的单元格范围,然后对 cCell 和 destRange 进行联合,并进行命名新系列更容易。
rangeName = "Friday" & CStr(y + 1)
priorRangeName = "Friday" & CStr(y)
namedRangeExist = CheckForNamedRange(rangeName)
If namedRangeExist = False Then
Set cCell = Range(priorRangeName)
Set destRange = Range(cCell.offset(1, 0).Address & ":" & cCell.offset(2, 0).offset(0, 1).Address)
cCell.AutoFill Destination:=Union(cCell, destRange), Type:=xlFillFormats
Application.CutCopyMode = False
destRange.Name = rangeName
End If
更新#2
For 循环中的命名范围存在问题(下面的代码在 For 循环内运行)。第一次未找到新的范围名称时,将 cCell 设置为先前的范围名称并运行代码以复制合并的单元格格式并命名新范围可以正常工作。这是代码
rangeName = "Thursday" & CStr(y + 1)
priorRangeName = "Thursday" & CStr(y)
namedRangeExist = DoesNamedRangeExist(rangeName)
If namedRangeExist = False Then
Set cCell = Range(priorRangeName)
Debug.Print "cCell:" & cCell.Address
Set cCell = cCell.MergeArea
Debug.Print "Merged cCell:" & cCell.Address
Set destRange = Range(cCell.offset(1, 0).Address & ":" & cCell.offset(2, 0).offset(0, 1).Address)
Debug.Print "Dest:" & destRange.Address
Debug.Print "Unioned:" & Union(cCell, destRange).Address
cCell.AutoFill Destination:=Union(cCell, destRange), Type:=xlFillFormats
Application.CutCopyMode = False
destRange.name = rangename
End If
结果在以下范围内
cCell:$G$22
合并的 cCell:$G$22:$H$23
目的地:$G$24:$H$25
联合:$G$22:$H$25
但是,如果第二次需要创建多个新的命名范围,则此代码会生成一个范围区域,如下所示的输出所示
cCell:$G$24:$H$25
那么为什么第一次运行时cCell的地址仅显示左上角的单元格地址,但第二次运行时cCell的地址显示为整个合并的单元格范围?因为确实如此,下一个代码行会产生范围对象错误
Set cCell = cCell.MergeArea
删除该代码行并将第一个 Set cCell 修改为此;
Set cCell = Range(priorRangeName).MergeArea
产生同样的错误。我可以通过设置一个计数器来解决这个问题,如果超过一个,则绕过该代码行,但这不是首选解决方案。
最佳答案
首先,创建一个函数来调用命名范围。如果调用命名范围产生错误,该函数将返回 False,否则将返回 True。
Function NameExist(StringName As String) As Boolean
Dim errTest As String
On Error Resume Next
errTest = ThisWorkbook.Names(StringName).Value
NameExist = CBool(Err.Number = 0)
On Error GoTo 0
End Function
关于你的第二个问题,我的自动填充没有问题。
我会将 Set destRange = Range(cCell.Address & ":"& cCell.offset(2, 0).offset(0, 1).Address)
替换为 Set destRange = cCell.Resize(2,1)
。它具有相同的效果,但后者更干净。
关于VBA 命名范围检查名称是否存在的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38410111/
我有一个 if 语句,如下所示 if (not(fullpath.lower().endswith(".pdf")) or not (fullpath.lower().endswith(tup
然而,在 PHP 中,可以: only appears if $foo is true. only appears if $foo is false. 在 Javascript 中,能否在一个脚
XML有很多好处。它既是机器可读的,也是人类可读的,它具有标准化的格式,并且用途广泛。 它也有一些缺点。它是冗长的,不是传输大量数据的非常有效的方法。 XML最有用的方面之一是模式语言。使用模式,您可
由于长期使用 SQL2000,我并没有真正深入了解公用表表达式。 我给出的答案here (#4025380)和 here (#4018793)违背了潮流,因为他们没有使用 CTE。 我很欣赏它们对于递
我有一个应用程序: void deleteObj(id){ MyObj obj = getObjById(id); if (obj == null) { throw n
我的代码如下。可能我以类似的方式多次使用它,即简单地说,我正在以这种方式管理 session 和事务: List users= null; try{ sess
在开发J2EE Web应用程序时,我通常会按以下方式组织我的包结构 com.jameselsey.. 控制器-控制器/操作转到此处 服务-事务服务类,由控制器调用 域-应用程序使用的我的域类/对象 D
这更多是出于好奇而不是任何重要问题,但我只是想知道 memmove 中的以下片段文档: Copying takes place as if an intermediate buffer were us
路径压缩涉及将根指定为路径上每个节点的新父节点——这可能会降低根的等级,并可能降低路径上所有节点的等级。有办法解决这个问题吗?有必要处理这个吗?或者,也许可以将等级视为树高的上限而不是确切的高度? 谢
我有两个类,A 和 B。A 是 B 的父类,我有一个函数接收指向 A 类型类的指针,检查它是否也是 B 类型,如果是将调用另一个函数,该函数接受一个指向类型 B 的类的指针。当函数调用另一个函数时,我
有没有办法让 valgrind 使用多个处理器? 我正在使用 valgrind 的 callgrind 进行一些瓶颈分析,并注意到我的应用程序中的资源使用行为与在 valgrind/callgrind
假设我们要使用 ReaderT [(a,b)]超过 Maybe monad,然后我们想在列表中进行查找。 现在,一个简单且不常见的方法是: 第一种可能性 find a = ReaderT (looku
我的代码似乎有问题。我需要说的是: if ( $('html').attr('lang').val() == 'fr-FR' ) { // do this } else { // do
根据this文章(2018 年 4 月)AKS 在可用性集中运行时能够跨故障域智能放置 Pod,但尚不考虑更新域。很快就会使用更新域将 Pod 放入 AKS 中吗? 最佳答案 当您设置集群时,它已经自
course | section | type comart2 : bsit201 : lec comart2 :
我正在开发自己的 SDK,而这又依赖于某些第 3 方 SDK。例如 - OkHttp。 我应该将 OkHttp 添加到我的 build.gradle 中,还是让我的 SDK 用户包含它?在这种情况下,
随着 Rust 越来越充实,我对它的兴趣开始激起。我喜欢它支持代数数据类型,尤其是那些匹配的事实,但是对其他功能习语有什么想法吗? 例如标准库中是否有标准过滤器/映射/归约函数的集合,更重要的是,您能
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 9 年前。 Improve
我一直在研究 PHP 中的对象。我见过的所有示例甚至在它们自己的对象上都使用了对象构造函数。 PHP 会强制您这样做吗?如果是,为什么? 例如: firstname = $firstname;
...比关联数组? 关联数组会占用更多内存吗? $arr = array(1, 1, 1); $arr[10] = 1; $arr[] = 1; // <- index is 11; does the
我是一名优秀的程序员,十分优秀!