[[20121218163748]] 『よく使う動作をマクロボタンに登録したい』(みそみそ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『よく使う動作をマクロボタンに登録したい』(みそみそ)
いつもお世話になります。エクセル2003です。

よく使う動作なので,「新しいマクロの記録」を使って便利にしたいと思っています。

やりたい動作・・・・・
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

皆様,ありがとうございました。
Mookさんの作っていただいたマクロで希望通りの結果を得ることができました。
「マクロの記録」だけでは限界がある,ということがよくわかりました。
ただ,私のようにマクロの知識がない者には,どこをどう修正したら良いのかわかりません。
用語も知りませんし。
「マクロの記録」は便利な機能なのでよく利用していましたが,
ちょっと込み入ったことをすると,このように行き詰ってしまうのですね。
皆様の知識がうらやましいです。

ご教授いただきありがとうございました。
(みそみそ)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.