我怎么能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