2017-05-23 25 views
0

以下のコードを使用して作成したフォームで5つの情報を入力するBASE_GERAL_FUNCIONARIOSというワークシートがあります。私はすべての情報を入力することができると私は、「挿入」ボタンでこのコードを関連付けられている:excel:実行時エラー9フォーム実行時

Private Sub inserirInfo_Click() 
Dim LastRow As Range 
Dim ExpenseTable As ListObject 

'Add row to bottom of BASE_GERAL_FUNCIONARIOS table 

Worksheets("BASE_GERAL_FUNCIONARIOS").Activate.ListObjects("BASE_GERAL_FUNCIONARIOS").ListRows.Add 


'Enter data from form into our new row 
Set ExpenseTable = Worksheets("BASE_GERAL_FUNCIONARIOS").Activate.ListObjects("BASE_GERAL_FUNCIONARIOS") 
Set LastRow = ExpenseTable.ListRows(ExpenseTable.ListRows.Count).Range 

With LastRow 

    .Cells(1, 1) = cmbMatricula.Value 
    .Cells(1, 2) = cmbNome.Value 
    .Cells(1, 3) = cmbFuncao.Value 
    .Cells(1, 4) = txtAlocacao.Value 
    .Cells(1, 5) = txtDataIni.Value 
    .Cells(1, 6) = txtDataFim.Value 


End With 
End Sub 

私のフォームは、私が情報を記入しますシートとは異なるシートに配置されます。とにかく、私は私が得続けるのコードを実行するとランタイムコードのこの部分を強調してエラー9:。

Worksheets("BASE_GERAL_FUNCIONARIOS").Activate.ListObjects("BASE_GERAL_FUNCIONARIOS").ListRows.Add 
私は「ActivateSheet」の代わりに、ワークシート(「」)Activateを使用して考えていた

が、私は本当にこの問題を解決する方法を知らない。誰でも助けることができますか?

+1

'.Activate'は何も返しません。あなたがしているようにコールを連鎖させることはできません。とにかく '.Activate'する必要はありません。削除し、' Worksheets( "name")。ListObjects( "name").ListRows.Add'を実行してください。 –

+0

また、文字列リテラルに改行が含まれていないこと、そしてユーザーがこれらのシート/表の名前を変更していないことを確認してください。 –

+0

実際には、表とシートの名前が異なります。私はそれを名前を付けずに参照する方法を考えていたが、あなたが言ったように私はできないようだ。 – paulinhax

答えて

1

エラー9は、添え字が範囲外です。つまり、参照しているオブジェクトがワークブック/ワークシートに存在しません。

ブックに "BASE_GERAL_FUNCIONARIOS"という名前のシートがあり、そのシートに「BASE_GERAL_FUNCIONARIOS」という名前のExcelテーブルがあることを確認してください。

それ以外

、正しい構文は次のように二行目は次のようになります... Worksheets("BASE_GERAL_FUNCIONARIOS").ListObjects("BASE_GERAL_FUNCIONARIOS").ListRows.Add

同じ方法だろう...

Set ExpenseTable = Worksheets("BASE_GERAL_FUNCIONARIOS").ListObjects("BASE_GERAL_FUNCIONARIOS") 
+0

実際には、私のテーブルはこの名前を持っていません...シートだけがあります。テーブルの名前を変更せずに参照する方法はありますか? – paulinhax

+0

テーブルをインデックス番号で参照することができます。したがって、シートに1つのテーブルしかない場合は、.ListObjects(1) – sktneer

+0

で参照できます。同じシートに2つのテーブルがある場合、このタイプの参照を行う方法はありますか? – paulinhax