私は検索しましたが、これを行う方法が見つかりませんでした。セルが存在するかどうかを知る方法
私はこれが可能
if ActiveDocument.Range.Tables(1).Cell(i, 2) present
do some stuff
end if
私は検索しましたが、これを行う方法が見つかりませんでした。セルが存在するかどうかを知る方法
私はこれが可能
if ActiveDocument.Range.Tables(1).Cell(i, 2) present
do some stuff
end if
である場合、これは働くことができるかを知りたい:
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
を、それが存在していなかった場合は、そのエラーをスローしないでしょうか? – newguy
私は新しく、エラーでの対応を理解できません。はい、実際にはエラーが発生します。 – Rahul
うん、あなたはそれをテストすることができます。 – vacip