2

なぜこの問題が発生するのかを確認しようとしています。

Private Sub test()

Dim Row As Integer

For Row = 1 To 100

   'Loop through SummaryRange and ignore blanks but get document type'
    Dim documentTypes As String

    Dim myDocument As String, Column As Integer

    Column = 2

   'First get range from Summary'
    Sheets("Sheet1").Active

    If ActiveSheet.Cells(Row, Column).Value <> "" Then documentTypes = documentTypes + "," + ActiveSheet.Cells(Row, Column).Value

    Sheets("Sheet12").Active

    ActiveSheet.Range("B17").Value = documentTypes

Next Row

End Sub

別のワークシートの範囲をループして値を取得し、それらを文字列に連結してその文字列を出力しようとしています。

編集:

SummaryRange を削除し、範囲外の問題を取り除きましたが、Object doesn't support this property or method

4

3 に答える 3

1

変更してみてください:

 Sheets("Sheet1").Active

に:

 Sheets("Sheet1").Activate

同じことが次の場合にも当てはまります。

 Sheets("Sheet12").Active
于 2012-04-04T00:33:33.537 に答える
1

変更してみる

SummaryRange.Range("Row:Column").Value

SummaryRange.Range(Row:Column).Value

更新:次を試してください

Dim range As Range
Dim row As Range
Dim cell As Range

Set range = Range("B1:B100")

For Each row In range.Rows
   For Each cell in row.Cells

      'processing code
      'documentTypes = documentTypes + "," + cell.Value

      'etc...

   Next cell
Next row
于 2012-04-03T23:04:26.663 に答える
1

bouvierr が既存の問題に回答しましたが、実際にループを回避して、これをより効率的に行うことができることに注意してください

この行
strOut = Join(Application.Transpose(ws.Range("B1:B100")), ",")
は、コンマで区切られた B1:B100 からのすべての値の文字列を生成します

一部の値が空である可能性があるため、結果の文字列は次のようになります test,1,2,3,,,3,,afaff,,,,,,,,,,,

したがって、正規表現を使用して複数,を単一にクリーンアップしました'

Sub QuickGrab()
Dim ws As Worksheet
Dim objRegex
Dim strOut As String

Set ws = Sheets("Sheet1")
strOut = Join(Application.Transpose(ws.Range("B1:B100")), ",")

Set objRegex = CreateObject("vbscript.regexp")
With objRegex
    .Pattern = ",{2,}"
    .Global = True
    strOut = .Replace(strOut, ",")
End With

MsgBox strOut
End Sub
于 2012-04-04T01:09:42.577 に答える