• ベストアンサー

ExcelのVBAで質問が3つあります・・・

こんばんわ。VBA初心者です。 会社で必要を迫られているのですが、どうしてもわからないので教えてください。 質問1   30枚ほどのSheetに、同じ作業をします。   まず最初の1枚目に自動初期でマクロを組みました。   そのマクロを、「Next Sheet」など使用し、   同じ作業をさせるには? 質問2   Sheet1 Sheet2 Sheet3 Sheet4・・・・・とたくさんのSheetがある場合   Sheet4以降の全てのSheetを削除させるには? 質問3   セル上の数字を取得して、行幅を設定するには? 以上、3つの質問です。 いっぺんに質問してしまい、すみません。 本やサイトを見て回ったのですが、どうしてもわからなくて・・・ 1つでもかまわないので、どうかご教授ください。 よろしくお願いいたします。  

質問者が選んだベストアンサー

  • ベストアンサー
noname#24040
noname#24040
回答No.4

あと、 参考までに select を多用すると速度が遅くなりますよ。 それと、 よくかんがえたら、カテゴリー違うことない? VBAはユーザー数の最も多いプログラム言語ではないでしょうか。 ほとんどの問題が解決しますよ。

hyorono
質問者

お礼

Selectを多用すると速度が遅く!? 知りませんでした~~~ もっと勉強します!! カテゴリー・・・いまいちわからなくて OSってあったので、これかな~って選んでしまったのですが・・・ 違いましたか!すみません!! 何のカテゴリーでしょう?? 忙しくなければ、ついでに教えていただきたいです^^ 今回は、本当にありがとうございました。 質問3がわかり次第、締め切らせていただこうとおもいます^^

hyorono
質問者

補足

はっ カテゴリー「Office系ソフト」というのがありましたー もしくは、「Visual Basic」ですかね?? ほんとお恥ずかしい^^; どうもありがとうございました!

その他の回答 (3)

noname#24040
noname#24040
回答No.3

ws.Activate <--これを付け足して試してみて。 Range("A1").Select Selection.FormulaR1C1 = "a" Range("A2").Select

hyorono
質問者

お礼

またまたお答えありがとうございます!!! 1番目の回答を頂いた後、 その回答を元に、いろいろサイトを検索した結果 x.select を足してできるようになりました!! 何度も、本当にありがとうございます。 また何かありましたら、よろしくお願いします!!

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>質問2 シートの名前を見て削除するのでしょうか? 適当に削除するならこんなかんじ While (Sheets.Count > 4) Sheets(5).Delete Wend >質問3 a1の値をみて、A列の幅を変えるのは例えばこんな Columns("A:A").ColumnWidth = Range("a1").Value

hyorono
質問者

お礼

質問3、できましたーーーー! Rows("1:1").RowHeight = Range("h6").Value ほんとにありがとうございます^^ また何かありましたら、よろしくお願いします!!!

hyorono
質問者

補足

早速のお答えありがとうございます!! 質問2、できました!!! 勉強して、「削除しますか」の確認メッセージも表示させないように してみました^^ 質問3は、列幅ではなく、行幅なんです・・・ ColumnをRowに変えてみたのですが駄目でした・・・>< もしよかったら、また教えてください。 本当にありがとうございました!!

noname#24040
noname#24040
回答No.1

1は、 Dim ws as Worksheet For Each ws in Worksheets .........処理 Next

hyorono
質問者

補足

さっそくお答えありがとうございます! ですが、ほんと初心者でうまくいきません・・・ ちなみに、試しで↓のようにやってみました。 シートは、Sheet1 Sheet2 Sheet3 とあり、 Sheet1をアクティブにした状態で、このマクロを走らせてみたのですが Sheet1にしか実行されませんでした。 ほんと恥ずかしいのですが、なにがいけないのでしょうか?? よかったら、もう一度教えてください。 よろしくお願いします。 標準モジュールで作成 Sub 試し() Dim ws As Worksheet For Each ws In Worksheets Range("A1").Select ActiveCell.FormulaR1C1 = "a" Range("A2").Select Next End Sub

関連するQ&A

専門家に質問してみよう