2016-04-30 13 views
1

私は検索しましたが、これを行う方法が見つかりませんでした。セルが存在するかどうかを知る方法

私はこれが可能

if ActiveDocument.Range.Tables(1).Cell(i, 2) present 
    do some stuff 
end if 
+0

を、それが存在していなかった場合は、そのエラーをスローしないでしょうか? – newguy

+0

私は新しく、エラーでの対応を理解できません。はい、実際にはエラーが発生します。 – Rahul

+0

うん、あなたはそれをテストすることができます。 – vacip

答えて

3

である場合、これは働くことができるかを知りたい:

Dim mycell as cell 

On Error Resume Next 'If an error happens after this point, just move on like nothing happened 
    Set mycell = ActiveDocument.Range.Tables(1).Cell(1, 1) 'try grabbing a cell in the table 
On Error GoTo 0 'If an error happens after this point, do the normal Error message thingy 
If mycell Is Nothing Then 'check if we have managed to grab anything 
    MsgBox "no cell" 
Else 
    MsgBox "got cell" 
End If 

あなたがループ内で複数のセルをテストしたい場合は、しようとする前set mycell=nothingに忘れてはいけません再び。

(mycellの可変的な方法の代わりに、セルを使用しようとしたときにエラーが発生していないかどうかを確認することもできますが、これを行うにはIf err > 0 Thenを使用できます。 。)


OPの具体的な質問に対する具体的な答えは:

If .Find.Found Then 'this is custom text search, has nothing to do with specified cell exist. 
Set testcell = Nothing 
On Error Resume Next 
    Set testcell = tbl.Cell(i, 6) 
On Error GoTo 0 
If Not testcell Is Nothing Then 
    tbl.Cell(i, 2).Merge MergeTo:=tbl.Cell(i, 3) 
End If 
End If 

これが意味:

If your .find does whatever... then 
    Try grabbing the cell in question (the 4 rows: Set...Nothing, On error..., Set..., On Error...) 
    If we could grab the cell, then merge cells 

On ErrorステートメントであるVBAのエラー処理について少しお読みください。 VBAでは、Try ... Catchはありません。これが私たちができることです。

これが解決したらいいですか?参考のため


、私はここで完全なコードを投稿します:

Sub test() 

Dim tbl As Table 
Dim testcell As Cell 

Set tbl = ActiveDocument.Range.Tables(1) 

For i = 1 To 6 

    Set testcell = Nothing 
    On Error Resume Next 
    Set testcell = tbl.Cell(i, 6) 
    On Error GoTo 0 

    If Not testcell Is Nothing Then 
    tbl.Cell(i, 2).Merge MergeTo:=tbl.Cell(i, 3) 
    End If 

Next i 

End Sub 
+0

私は理解するのに時間がかかります。私はコメントします。 – Rahul

+0

'IsEmpty'はそのセルの値がそのセル自体の存在をチェックしないので、テーブルにセルがあるかどうかをどのように検出するのか分かりません。 – newguy

+0

基本的には、変数をセルに設定しようとしています。つまり、私は細胞を使用しようとします。失敗した場合は、テーブルにそのようなセルがないことを意味するので、変数は空になります。私が成功すれば、私は変数の中に何かを持っていきます。 – vacip

関連する問題