エクセル97で入力したシートをVBAプログラムで最後のシートの後ろにコピーするようにしています。何枚になるかはデータ量によりシート数が違ってきます。

処理が終了した後、コピーしたシートが何枚有るのかをVBAで把握する方法なり、コマンドなりを知りたいのですが。
ご存じの方教えて下さい。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

97持ってないんで95でやってみましたがブック全体のワークシート数なら


ActiveWorkbook.Worksheets.Count
で解ります。
    • good
    • 0
この回答へのお礼

ありがとうございました。
カウントできました。
お陰様で、これで、今作っているプログラムが完成します。

お礼日時:2001/02/01 23:42

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QエクセルVBAで、シートをコピーした際、コピーされた新しいシートのほう

エクセルVBAで、シートをコピーした際、コピーされた新しいシートのほうを指定する言葉を知りたい。
コマンドボタンにて、(1)内訳用シートをコピーで増やす。(2)新しいシートの番号を連番になるよう1増やす。(3)新しいシートのほうは入力しやすいよう、入力欄を消去する。シート名も1.2.3...とふえていくようにしたい。

新しくコピーされたほうのシートを指定したい場合はどのようなVBA用語になりますか?

いまは、元のシート指定方法しかわからないため、元シートの前にコピー作成し、元シートのNoを1増やし、データ消去で対応していますが、これだと、シート名に表示される内訳(1)(2)・・という番号になるので、できれば、コピーしたほうのシートを指定して、Noを1増やし、データ消去できれば解決するとおもうので。。いま、使ってるVBAはこんな式です。
ちなみにK6はシートNo、("B10:H30")("J10:K30")は入力欄です。


Private Sub CommandButton1_Click()


ActiveSheet.Copy Before:=ActiveSheet
Range("K6").Value = Range("K6").Value + 1

Range("B10:H30").ClearContents
Range("J10:K30").ClearContents


ActiveSheet.Select

ActiveSheet.Name = Range("K6").Value


End Sub

エクセルVBAで、シートをコピーした際、コピーされた新しいシートのほうを指定する言葉を知りたい。
コマンドボタンにて、(1)内訳用シートをコピーで増やす。(2)新しいシートの番号を連番になるよう1増やす。(3)新しいシートのほうは入力しやすいよう、入力欄を消去する。シート名も1.2.3...とふえていくようにしたい。

新しくコピーされたほうのシートを指定したい場合はどのようなVBA用語になりますか?

いまは、元のシート指定方法しかわからないため、元シートの前にコピー作成し、元シートのNoを1増やし、...続きを読む

Aベストアンサー

一番最後尾にデータの入っていないシートを
連番とダブらないような名前で作っておいて
Private Sub CommandButton1_Click()
Sheets(Sheets.Count).Copy Before:=Sheets(Sheets.Count)
NEWWS = Sheets.Count - 1
Sheets(Sheets.Count - 1).Name = NEWWS
End Sub
というのはどうでしょうか。

QExcel VBA シートのコピー時に、シート上のコンボボックスもコピーしたい。

こんにちは。
Excel VBAについて質問させていただきます。
やりたいことは、
シートAにボタンとコンボボックスを配置し、
コンボボックスには氏名の一覧を設定しています。
そこで、ボタンを押すとシートAをボタンとコンボボックスごと
シートBという名前でコピーをしたいと思っています。

ActiveSheet.Copy Before:=Worksheets(1)
でシート・ボタン・コンボボックスのコピーはうまく出来たのですが、
コンボボックスに設定していた氏名の一覧はコピーされていませんでした。

コピー先のシートのコンボボックスにもう一度氏名の一覧を
設定するしかないのでしょうか?
それともシートのコピー時に何かいい方法があるのでしょうか。

宜しければアドバイスをお願い致します。
OSはWindows2000Pro
Excelは2000です

Aベストアンサー

こんばんは。再度の登場です。

先の回答は、ListFillRangeプロパティを使用したものですのでコピーしても値は保持されますが、
質問者のように、AddItemメソッドでセットしたものはコピーしても保持されませんので改めてセットする必要があります。

現在”コンボボックスの中身もコピー”されてるようですが、
その中身のコピーを実行するタイミングを誤ると上手くいかない場合があります。
シートのコピーと同時に”中身のコピー”をするとそれは一見上手くいってるようでも
ブックを閉じて再度開いたときにはクリアーされますので、
コピーしてできたシートがActiveになるたびにそのシートのComboboxにも値をセットしなければいけません。
WorkBookOpenイベントでセットしているのは「元のComboboxにのみ」Listをセットしているわけですから。

●要約●
以下、コピーされてできた新しいシートは、見積書2、とする
(方法1)
「見積書2」がアクティブになる度に「見積書」のComoboxのListをコピーする
(方法2)
WorkbookのOpenイベントの”Function SetComboBox()”を標準モジュールへ移し、
「見積書」「見積書2」それぞれのActivateイベントで、”Function SetComboBox()”を呼び出す
その場合、”Function SetComboBox()”のComboboxのコンテナである固有のシート名は使わずに、ActiveSheetに変更しておく
(方法3)
WorkBookのOpenイベントでは、リスト一覧を配列変数に作成しておき
「見積書」「見積書2」がActiveになったときそのシート上のComboBoxのListに配列変数をセットする
 
●もし興味があれば、配列変数をListプロパティに直接セットするコードをアップしてもいいのですが。。。
 
それから、敬称Comboのリストは決まっているようですから、
別なシートのどこかのセルに一覧を作っておき、
ListFillRangeプロパティにセットしておけばいいですね。

以上です。

 

こんばんは。再度の登場です。

先の回答は、ListFillRangeプロパティを使用したものですのでコピーしても値は保持されますが、
質問者のように、AddItemメソッドでセットしたものはコピーしても保持されませんので改めてセットする必要があります。

現在”コンボボックスの中身もコピー”されてるようですが、
その中身のコピーを実行するタイミングを誤ると上手くいかない場合があります。
シートのコピーと同時に”中身のコピー”をするとそれは一見上手くいってるようでも
ブックを閉じて再度開いたとき...続きを読む

Qエクセルの2枚のシートを1枚にコピーしたいです。

エクセルで2つのシートにデータを入力しました。
150人分くらいのデータです。

1枚目と2枚目どちらにも同じ150人の2種類のアンケートのデータが入っています。

これを1枚の紙に2つのアンケートをまとめてコピーしたいのですが、全くやり方がわからなくて困っています。

エクセルには回答のみ入力していまして
コピーする時には問題も付けて1枚にコピーしたいのです。

本当に困ってます。。。
詳しいかた、回答お願いします。

わかりにくい文章ですみません。。。

Aベストアンサー

会社のWORDが2000とのことなので、URLのやり方とはちょっと違います。

>「データファイルを開く」 → 「ワークシート全体」
>で「差し込みフィールドの挿入」で2枚のシートどっちともできるのでしょうか?

まず、これはEXCELのシートを1枚に加工しなおさないとダメです。
そしてWORD2000だと、EXCELの左端のシートしか参照できないので、
1枚差込専用データのシートを作って左端にドラッグします。
もしデータが縦長に入力されていたら、
A B C
1 問1 問2 問3 …
2 はい いいえ はい

こんな感じで横長にします。
EXCELデータを縦から横に並び方を変える方法はご存じですよね?
一応参考までに。
データが入っている範囲をコピー→形式を選択して貼り付け→
行列を入れ替える(E)にチェックを入れ、貼り付けで
縦が横に並び替えできます。

Qエクセル97・ワード97・アウトルック97が入ったCD-ROMを小屋から発見しました。何につかえるでしょうか?

小屋の中を整理していたら7年前に買った
エクセル97・ワード97・アウトルック97が入った一枚のCD-ROMを発見しました。
(オフィス○○○○とはどこにも書いてありません)
現在持っている自作パソコンでOEM版のXPホームはあるんですが
エクセルなど高いので買っていませんでしたので
これを気に自作パソコンにインストールしたいと思っています。
そこで質問なんですが。
(1)これはエクセル2003とかにアップグレードすることができるのでし ょうか?
(2)XPでも使えるのでしょうか?
(3)機能的に97は使えるのでしょうか?
(4)その他 何か教えてください

回答お願いします。

Aベストアンサー

追伸です。

http://www.microsoft.com/japan/office/system/upgrade.mspx#EAAA
97はぎりぎりアップグレード版の対象になっているようです。

QVBAでコピーした時コピー元のシートをアクティブ等

いつもお世話になります。
WINDOWS7 EXCELL2010 です。

下記で御指導いただいたばかりです。
http://oshiete.goo.ne.jp/qa/8787962.html

二つ質問があります。

「元本」のシートをコピーした時、コピー先がアクティブになります。
これを「元本」シートがいつもアクティブになるようにしたいのですが。

添付図のように最初にコピーの作業をした時は上手くゆくのですが二回目以降でこのボタンをクリックすると図のようになります。 もう一度クリックすると作動します。
同作業を繰り返すと同現象が発生します。

誠に恐れ入りますが 「1 と 2」の解決方法を御指導いただけないでしょうか。

参考に
Sub SheetCopy()
'
' SheetCopy Macro
' 元本のシートをコピーする
Dim NewSheetName As String

NewSheetName = InputBox("一桁の月及び日でも二桁のMMDD形式で新しいシート名を入力してください")

Sheets("元本").Copy After:=Sheets(1)
Sheets("元本 (2)").Select
Sheets("元本 (2)").Name = NewSheetName
Range("A1").Select
ActiveCell.FormulaR1C1 = NewSheetName
Range("A2").Select

Dim myBut As Object
For Each myBut In ActiveSheet.Buttons
If myBut.Caption = "SheetCopy" Then myBut.Delete
Next
End Sub

いつもお世話になります。
WINDOWS7 EXCELL2010 です。

下記で御指導いただいたばかりです。
http://oshiete.goo.ne.jp/qa/8787962.html

二つ質問があります。

「元本」のシートをコピーした時、コピー先がアクティブになります。
これを「元本」シートがいつもアクティブになるようにしたいのですが。

添付図のように最初にコピーの作業をした時は上手くゆくのですが二回目以降でこのボタンをクリックすると図のようになります。 もう一度クリックすると作動します。
同作業を繰り返すと同現象が発生...続きを読む

Aベストアンサー

最後の End subの直前にでも
Sheets("元本").Select
を挿入することで1は解決するでしょう。

でも2の方は再現できませんでしたのでわかりません。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報