[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『よく使う動作をマクロボタンに登録したい』(みそみそ)
よく使う動作なので,「新しいマクロの記録」を使って便利にしたいと思っています。
やりたい動作・・・・・
1.新しいマクロの記録
2.新しいウインドウを開く
3.すべてのシートを選択
4.ズーム75%
5.ツール,オプションで枠線のチェックをはずす
6.作業グループ解除
7.整列,上下に並べて表示
8.下段のウインドウの任意のセルをクリック
9.記録終了
これを個人ブックに保存し,別のブックを開いて実行すると,上記の「2.新しいウインドウを開く」で早くもストップしてしまいます。
エラーメッセージには「インデックスが有効範囲にありません」とあります。
たぶん「3.すべてのシートを選択」の際にブックによってシート名が違うせいなのかな,と推測しています。
マクロはチンプンカンプンなので,VBAとか言われてもさっぱりわかりません。
なんとか工夫して上記の手順を一発でマクロボタンに登録し,どのブックを開いてもこの動作が有効になるようにしたいのです。
一発では無理でも,いくつかに手順を分ければ出来る,というのでしたら教えていただけないでしょうか。
よろしくお願いいたします。
とりあえず、その、動かないマクロを、そのままコピペしてアップしよう。
(ぶらっと)
直接の回答でなくて、すみませんが、とりあえず、エラー表示の理由については、たぶん以下のようなことかなと思います。
>エラーメッセージには「インデックスが有効範囲にありません」とあります。 ということは、おそらく、個人用マクロブック自体に、記録したマクロを実行したのではないでしょうか。
そうすると、個人用マクロブックにはシートが1枚しかないので、「3.すべてのシートを選択 」によって記録された Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Selectの部分が黄色くなってエラーとなっていませんか。
別ブックに対してマクロを実行していれば(みそみそ)さんの記録したマクロで動きそうですが。
個人マクロブックを再表示した場合は、非表示に戻してから、一度保存することが必要です。
あとは、ぶらっとさんをはじめ、もっとエキスパートな回答者さんが教えてくださると思いますので、ぶらっとさんのおっしゃるように 記録したマクロをそのままアップしてみてくださいね!(^^)!
(usamiyu)
マクロはチンプンカンプンなので,VBAとか言われてもさっぱりわかりません。
とのことですが、潜在的にはそうとう書けるかただと思います。
(これだけきっちり質問できるひとはそう多くありません)
面倒そうなので深入りしたくないということでしょうか?
それとも、ちょっとだけならやってみてもいいかな、とお思いでしょうか。
いずれにせよ、マクロの記録だけでは無理です。
っと。無理と断言するのはコワイか。
手作業で全シート選択する方法がみつかれば道が開けるかもしれません。
2でストップしてしまう がちょっと気になりますが。
−佳−
Sub 整列()
'
' 整列 Macro
' マクロ記録日 : 2012/12/19 ユーザー名 : 99999
'
'
ActiveWindow.NewWindow Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select Sheets("Sheet1").Activate ActiveWindow.Zoom = 75 ActiveWindow.DisplayGridlines = False Sheets("Sheet1").Select Windows.Arrange ArrangeStyle:=xlHorizontal Windows("新規Microsoft Excel ワークシート.xls:1").Activate End Sub
(みそみそ)
本当にエラーが出ているのは2の手順でしょうか。 こちらで実行してみるとエラーがでるのは最後の行でした。
ここはファイルごとに変わるので、マクロの記録だけでは出来ない限界でしょうか。
マクロがまったく分からないというのであれば、ウィンドウを選択する手間だけ ですから最終行を削除してもよいと思います。
ご参考までに、私が上記を変更するとしたらこんな感じになりました。 少し手抜きなので、同じ名前のウィンドウが3つ以上だと、意図したウィンドウ が選択されないかもしれませんけれど・・・。 (Mook)
Sub Sample() '// 最初に処理を始めたときのファイルを覚えておく Dim wb As Workbook Set wb = ActiveWorkbook
'// 新しいウィンドウを作成 ActiveWindow.NewWindow
'// シート名は分からないので、全部のシートを順番に処理 Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets ws.Activate '// 表示を75% ActiveWindow.Zoom = 75 '// 枠を非表示 ActiveWindow.DisplayGridlines = False '// グループ化を解除 ws.Cells.ClearOutline Next '// 整列 Windows.Arrange ArrangeStyle:=xlHorizontal
'// 最初と同じファイル名で、新規ウィンドウとは異なるブックを選択 '// 新規ウィンドウを作成した段階で ActiveWindow は新規ウィンドウになっている Dim w As Window For Each w In Windows '// タイトルバーの表示は Caption If ActiveWindow.Caption <> w.Caption And InStr(w.Caption, wb.Name) > 0 Then w.Activate Exit Sub End If Next End Sub
ご教授いただきありがとうございました。
(みそみそ)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.