0

計算を含むワークブックである VBA を使用してアドインを作成しました。アドインには、アクセス データベースから関連情報を抽出し、ワークブックに入力するためのユーザー フォームがあります。データが入力された後、Sheet1 で計算が実行されます。アドイン マクロの実行時に、アドイン ワークシートから新しいワークブックにワークシート "Sheet1" を貼り付ける必要があります。

しかし、アドインを実行すると、ワークシートが非表示になっているように見えるため、データが更新されません。次のエラーが表示されます:「実行時エラー '1004': オブジェクト '_Global' のメソッド 'Worksheets' が失敗しました」。

必要な計算が実行されるワークシートを含むアドインの操作方法を誰か教えてもらえますか?

興味深いのは、アドインを Excel のアドインのリストから削除した後にロードすると、完全に実行されることです。しかし、マクロを再実行すると、ワークシートが非表示になり、同じエラーが表示されます。私はVBAにかなり慣れていないので、何か提案をいただければ幸いです。

編集

コード:

Private Sub OptionOK_Click() 'On selecting OK from userform
  Dim ws1 As Worksheet
  Sheets("Sheet1").Visible = True 
  Set ws1 = Worksheets("Sheet1") 

 'User Form Validation 
  If Trim(Me.cboData.value) = "" Then 
    Me.cboData.SetFocus 
    MsgBox "Please complete the form" 
    Exit Sub 
  End If 

 'copies data to given cell in excel     
  ws1.Range("A1").value = Me.cboData.value 

 'To copy selection from "Sheet1" into new workbook 
Workbooks("myaddin.xlam").Sheets(1).Copy 
End Sub 

...> Sheets("Sheet1").Visible = True でエラーが発生します。

4

2 に答える 2

3

アドイン VBA コードで「ThisWorkbook」を使用する必要があることに気付きました。

Set ws1 = ThisWorkbook.Sheets ("Sheet1")

ワークブック内の VBA コードでは、アドイン内のシートまたは範囲を参照するために "ThisWorkbook" を使用する必要があります。

于 2013-10-02T13:25:57.577 に答える
0

それがどのシートであるかが分かっていて、アドイン コードにアクセスできる場合は、エラーをスローする行の前に表示されていることを確認してください。

Sheets("Sheet3").Visible = True

ただし、コードで非表示のシートを引き続き参照できるため、別の問題があると思われます。


この行は正しいですか:

Workbooks("myaddin.xlam").Sheets(1).Copy

シートの名前を参照する前に、ワークブック内のシートの位置を参照するようになりました。

于 2013-10-01T20:56:30.780 に答える