我怎么能select多个string的行
我试图select下列行,但它给我一个debugging错误。 我想因为实际的string超过了256个字符。 没有最后127:127的string工作。 我怎么能解决这个问题?
'不起作用
Range("488:488,456:456,455:455,454:454,453:453,448:448,441:441,440:440,439:439,438:438,437:437,436:436,435:435,421:421,414:414,395:395,392:392,391:391,390:390,389:389,388:388,387:387,386:386,385:385,384:384,383:383,382:382,381:381,380:380,379:379,378:378,369:369,127:127").Select
'加工
Range("488:488,456:456,455:455,454:454,453:453,448:448,441:441,440:440,439:439,438:438,437:437,436:436,435:435,421:421,414:414,395:395,392:392,391:391,390:390,389:389,388:388,387:387,386:386,385:385,384:384,383:383,382:382,381:381,380:380,379:379,378:378,369:369").Select Selection.Copy Sheets.Add after:=ActiveSheet ActiveSheet.Paste ActiveSheet.Name = "test1"
有很短的方法来表示您的范围,但是否它们是您的问题的真正解决scheme取决于您可能需要select的最大数量的区域。
例如
Range("A401,A403,A405").EntireRow
使用比范围更短的string
Range("401:401,403:403,405:405")
但如果你需要select更多的行,那么最终也会失败。 作为一种解决方法,您可以将两个独立的范围结合在一起:
... = Application.Union(Range(...), Range(...))
您可以像以前那样在string中定义范围,然后遍历每行并将其添加到所选范围。
Sub RangeSelectionTest() Dim selectedRange As range Dim row Dim rows As String Dim rowArray() As String 'Define row selection string rows = "488:488,456:456,455:455,454:454,453:453,448:448,441:441,440:440,439:439,438:438,437:437,436:436,435:435,421:421,414:414,395:395,392:392,391:391,390:390,389:389,388:388,387:387,386:386,385:385,384:384,383:383,382:382,381:381,380:380,379:379,378:378,369:369,127:127,150:150" 'Split to an array to loop rowArray = Split(rows, ",") ' Loop through all rows and add to range For Each row In rowArray If selectedRange Is Nothing Then Set selectedRange = range(row) Else Set selectedRange = Union(selectedRange, range(row)) End If Next ' Select the range selectedRange.Select End Sub
实际上,您可以创build一个函数,它接受一个范围string并返回范围对象。
Sub SelectMyRange() Dim rows As String 'Define row selection string rows = "488:488,456:456,455:455,454:454,453:453,448:448,441:441,440:440,439:439,438:438,437:437,436:436,435:435,421:421,414:414,395:395,392:392,391:391,390:390,389:389,388:388,387:387,386:386,385:385,384:384,383:383,382:382,381:381,380:380,379:379,378:378,369:369,127:127,150:150" Dim myRange As range Set myRange = RangeSelection(rows) myRange.Select End Sub Function RangeSelection(rangeString As String) As range Dim selectedRange As range Dim row Dim rowArray() As String 'Split to an array to loop rowArray = Split(rangeString, ",") ' Loop through all rows and add to range For Each row In rowArray If selectedRange Is Nothing Then Set selectedRange = range(row) Else Set selectedRange = Union(selectedRange, range(row)) End If Next ' Return the range Set RangeSelection = selectedRange End Function
- 为什么Excel.WorkSheet.Copy引发具有HRESULT的types为“System.Runtime.InteropServices.COMException”的第一次机会exception的exception:0x800A03EC
- 如何使用com4j API保存excel工作簿而不被提示
- 如何突出显示范围内同一行中的选定单元格
- 如何让用户从对话框中input范围
- 通过COM dll接收数据时,Excel Application.Ready = False
- 用python从多个xml文件中提取数据
- 通过编程从模板创buildExcel报告
- 使用命名范围进行条件数据validation
- excel:绘制数据未知的图表