【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?

仕事を一画面で操作するために他のsheetのデータ処理マクロを一つの同一sheetでマクロボタンを作ってできないものか。自分でやってみたが(マクロ実行)、無反応か(マクロボタン)、いまの開いているところのエクセルsheetデータを処理してしまうようだが。

A 回答 (3件)

シートをアクティブにして操作と言うマクロの作り方ではうまく行きません。


修飾方法を工夫してください
Application.window("ファイル名").Sheets.item("sheet1").cells(1,1).value = 1
みたいなシートを指定してセルに値を書き込む方法があるので、
それでやってみてください。
そうすれば、開いているシート以外のシートに値を書き込むことができます。
あと同じエクセル内に開いた別のブックにも値を書き込むことができますよ。
    • good
    • 0

最近も、同様のご質問がありましたが、リボンのボタンやボックス、クイックアクセスツールバーのアイコンにして、どこでも使えるボタンにしてもよいかもしれません。



いままで考えたことがありませんでしたが、大いにその案は賛成します。
ただ、マクロボタンの種類が、フォームコントロールに限ります。
ActiveX は、安全のためにも使わないほうがよいという話が出ています。
シートをActive するかしないかは任意ではあるけれども、コントロールパネルという考え方からすると、無駄になることも多いのではないかと思います。

どんな内容のコードか分かりませんが、例を示しておきます。
A1に書いた数字のシート番号からデータを持ってくるものです。

//'標準モジュールに限ります。
Sub ボタン1_Click()
'シート1 に設置
Dim Num As Variant
Dim LastRow As Long

Num = Range("A1").Value 'A1の数字を取得
If Num = "" Then Exit Sub
If IsNumeric(Num) = False Then Exit Sub

'シート2~4までの収録
If Num < 2 Or Num > 4 Then Exit Sub

'取得した数字を、Sheet名に当てはめて、データを探す
With Worksheets("Sheet" & Num)
'シート1のA列の最後尾を探す
LastRow = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
'シート1 の最後のA列のセルが10以下なら、10行目を最初とする
If LastRow < 10 Then LastRow = 10
  'A1からA列の最後までを行とし、横はE列までの範囲、Sheet1にコピー
 .Range("A1", .Cells(Rows.Count, 1).End(xlUp)).Resize(, 5).Copy _
  Worksheets("Sheet1").Cells(LastRow + 1, 1)
End With

End Sub
「同一ブックのSHEET1内で処理するマク」の回答画像3
    • good
    • 0
この回答へのお礼

ありがとう やってみます。ご丁寧にありがとう。

お礼日時:2017/12/25 08:38

実行されるマクロが、特定のシートに対して動作するように作れば可能です。


現在のマクロをそのまま使うなら、実際のマクロをみてみないとなんとも言えませんが、考え方としては
1.マクロを実行時、対象となるシートをアクティベイトする。(開いているところのシートになる)
2.そのマクロを呼び出す。
3.元のシートに戻す。(元のシートをアクティベイトする。)
の手順になるかと。
    • good
    • 0
この回答へのお礼

ありがとう やってみます。

お礼日時:2017/12/25 08:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報