首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在VBscript中定义range对象

如何在VBscript中定义range对象
EN

Stack Overflow用户
提问于 2019-05-30 21:07:02
回答 1查看 1.8K关注 0票数 0

我正在尝试将VBA程序转换为VbScript,以便从命令运行它。我在VBA中创建了一个程序,它获得一个excel工作簿和带标记的单元格,同时将其内容保留在所有新形成的未标记的单元格中。说明:光头的0在一个合并的单元格中,而1在非合并的单元中

[0][0]]__11

在函数之后,我希望结果如下所示:

11

一个单元格中的每个值

我写了一个VBA脚本来做这件事

此函数接受一个工作表,并取消所有单元格的边界,同时保留所有新形成的单元格的值

代码语言:javascript
复制
Sub UnMergeFill(ByVal ws As Worksheet)

    Dim cell As Range, joinedCells As Range

    For Each cell In ws.UsedRange
        If cell.MergeCells Then
            Set joinedCells = cell.MergeArea
            cell.MergeCells = False
            joinedCells.Value = cell.Value
        End If
    Next

End Sub

此函数接受第一个函数,并将其应用于工作簿中的所有工作表

代码语言:javascript
复制
sub UnMergeFillAllSheets()
    Dim ws As Worksheet
    for Each ws In Worksheets
         UnMergeFill ws
    Next
End Sub

当我将它转换成VBScript时,它看起来像这样:

代码语言:javascript
复制
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Dim myworkbook, worksheetcount,cell
Set myworkbook = objExcel.Workbooks.Open("C:\Users\sm\Documents\work\try\try.xlsx")
worksheetcount = myworkbook.Worksheets.Count
Msgbox ("there are:"&worksheetcount&" sheets")'testing
set cell = CreateObject("Range")
For i= 1 To worksheetcount
    set ws = objExcel.Worksheets(i)
    ws.Activate
    for each cell in ws.UsedRange

    **take all merge cells and un-merge them**

    Next

Next

我的问题是,我需要引用一个合并的单元格的范围,当我试图创建一个范围对象时,我得到了一个错误:

activeX组件无法创建对象:‘Range’

我知道Range的存在是因为我使用了TypeName(ws.UsedRange),并且对象是range类型。

谢谢你的帮助

EN

回答 1

Stack Overflow用户

发布于 2019-05-30 22:13:17

您正在使用后期绑定。正确的形式应该是只使用Dim cell,并将其设置为Range objects。如果你尝试用它做一些Range对象不能做的事情,你将不会得到任何调试帮助,就像你不会得到IntelliSense一样。

代码语言:javascript
复制
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True

Dim myworkbook, worksheetcount, cell

Set myworkbook = objExcel.Workbooks.Open("C:\Users\sm\Documents\work\try\try.xlsx")
worksheetcount = myworkbook.Worksheets.Count

Msgbox ("there are:"&worksheetcount&" sheets")'testing

For Each ws In objExcel.Worksheets
    ws.Activate
    For each cell in ws.UsedRange.Cells 'Loop through Cells, not Rows or Columns

        **take all merge cells and un-merge them**
    Next cell
Next ws
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56378961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档