2017-10-06 12 views
1

ワークシート(そして最終的にはワークブック)を実行するためのVBAコードを作成しようとしています。私は以下のコード使用して定義された範囲に私の目標を達成得ることができた:セル内のコンマ区切りリストへのExcel VBA検証リスト

Sub ValidationPrintOut2() 

    Dim cell As Range 
    Dim oldstr As String 
    Dim newstr As String 

    Dim usedcell As Range 

    For Each usedcell In ActiveSheet.Range("N1:N3") 
     For Each cell In Range(usedcell.Validation.Formula1) 
      oldstr = ActiveSheet.Cells(usedcell.Row, usedcell.Column + 2) 
      newstr = cell.Value 

      ActiveSheet.Cells(usedcell.Row, usedcell.Column + 2) = oldstr + ", " + newstr 
     Next cell 
    Next usedcell 
End Sub 

をしかし、私は列(下記)にそれを使用範囲にコードを拡大しようとしたときにコードがで壊して終わりますメソッドエラー '1004': '_Global'オブジェクトの 'Range'メソッドが失敗しました。

Sub ValidationPrintOut2() 

    Dim cell As Range 
    Dim oldstr As String 
    Dim newstr As String 

    Dim usedcell As Range 

    For Each usedcell In ActiveSheet.UsedRange.Columns("N") 
     For Each cell In Range(usedcell.Validation.Formula1) 
      oldstr = ActiveSheet.Cells(usedcell.Row, usedcell.Column + 2) 
      newstr = cell.Value 

      ActiveSheet.Cells(usedcell.Row, usedcell.Column + 2) = oldstr + ", " + newstr 
     Next cell 
    Next usedcell 
End Sub 

誰かがこれがなぜ起こっているのか、問題を解決する方法を説明できますか?ありがとう!

+0

問題は範囲が、いくつかのセルが検証を持っていないと –

答えて

1

IntersectとSpecialCellsを使用すると、検証でセルを循環するだけで済みます。 On Error行は、そのようなセルがない場合(おそらくあなたの原因となっている)、エラーメッセージを回避することです。

Sub ValidationPrintOut2() 

Dim cell As Range 
Dim oldstr As String 
Dim newstr As String 

Dim usedcell As Range 

On Error Resume Next 
For Each usedcell In Intersect(ActiveSheet.UsedRange, Columns("N").SpecialCells(xlCellTypeAllValidation)) 
    For Each cell In Range(usedcell.Validation.Formula1) 
     oldstr = ActiveSheet.Cells(usedcell.Row, usedcell.Column + 2) 
     newstr = cell.Value 
     ActiveSheet.Cells(usedcell.Row, usedcell.Column + 2) = oldstr + ", " + newstr 
    Next cell 
Next usedcell 

End Sub 
+1

感謝を実行しているからすべてを停止避けるために、ハンドリングエラーがないということではありません!これはうまくいった。私もエラー処理を追加して遊んで、それは間違いなく問題でした。 – bark16

関連する問題