- ベストアンサー
マクロのボタン名設定方法
お世話になります。 マクロのボタン名を 別のファイルのセルの値に設定したいとおもい プログラムを組んでいるのですが、うまくいきません。 CommandButton1をクリックしCommandButton2へ表示 Private Sub CommandButton1_Click() Workbooks("c:\file.xls").Worksheets("Sheet1").Range("A1").Copy Worksheets("Sheet1").CommandButton2.Caption End Sub や Private Sub CommandButton1_Click() Worksheets("Sheet1").CommandButton2.Caption = _ Application.ExecuteExcel4Macro("'C:\[file.xls]Sheet1'!" & Cells(1,1 ).Address(, , xlR1C1)) End Sub などといろいろ試しているのですが、 「インデックスが有効範囲にありません」 とエラーがかえってきます。 そもそもボタン等のプロパティにセットしようとしているのがいけないのでしょうか・・・。 どなたかご教授お願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>Workbooks("c:\file.xls").Worksheets("Sheet1").Range("A1").Copy Worksheets("Sheet1").CommandButton2.Caption セルの情報(データや書式も含めて)をコピーしてもボタン名にセットできません。 相手が「セル」の場合のみ有効です。 Worksheets("Sheet1").CommandButton2.Caption = Workbooks("file.xls").Worksheets("Sheet1").Range("A1").text などのようにセット(代入)します。 このとき、file.xls が開かれて居ないとエラーになります。 それを避けたいなら、適当なセルにfile.xlsの任意のセルへのリンク式を設定しておいて、データの更新を行った後、そのセルの値を参照してください。
その他の回答 (2)
以下のような感じでよいかと思います。 双方のファイルが同じフォルダ内にあるものとしてのサンプルです。 適所修正して下さいね。 Private Sub CommandButton1_Click() Workbooks.Open Filename:=ActiveWorkbook.Path & "\" & "Book1.xls" With Workbooks("book2.xls").Worksheets("Sheet1") Workbooks("book1.xls").Worksheets("Sheet1").CommandButton2.Caption = .Range("A1").Value Workbooks("book1.xls").Close (True) End With End Sub
お礼
ありがとうございます。 ご指摘を元にプログラムを組んだところ、うまく表示することが出来ました。 本当にありがとうございました。
- nov-d
- ベストアンサー率36% (51/140)
Workbooks("c:\file.xls")...の前に、1回「c:\file.xls」ファイルをオープンしないといけないのでは?
お礼
ありがとうございます。 ご指摘を元に早速プログラムを組みなおしてみます。
お礼
ありがとうございます。 ご指摘を元に作成してみたところ、思うような結果になりました。 本当に助かりました。