標記の件、御指導願います。

シート1:印刷設定(チェックボックスが印刷したいシート分あります)
シート2~34:チェックボックスがオンである表題のシートを選択し一括で印刷する。

を、VBAで作ってみましたが、エラー(インデックスが有効範囲にありません)が出てしまいます。

Sub CheckBoxPrint()

Dim ArrySheet() As String
Dim I As Long
Dim k As Long

k = 0

For I = 1 To 33

If ActiveSheet.OLEObjects("CheckBox" & I).Object.Value = True Then
ReDim Preserve ArrySheet(k)
ArrySheet(k) = ActiveSheet.DrawingObjects("CheckBox" & I).Object.Caption
k = k + 1
End If
Next I

ThisWorkbook.Worksheets(ArrySheet).PrintOut ←エラー(インデックスが有効範囲にありません)

Erase ArrySheet


End Sub
   
このエラーを回避する方法を御指導してください。
よろしくお願い致します。

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

印刷 VBA」に関するQ&A: VBA印刷ページ設定

A 回答 (2件)

エラーが出たからとすぐWEBなんぞに質問してませんか。


まず下記のように(確認用・・・の個所)でもして、自分がプログラムで設定した内容を確かめるクセを付けること。
Sub CheckBoxPrint()
Dim ArrySheet() As String
Dim I As Long
Dim k As Long
k = 0
For I = 1 To Sheets.Count - 1

If ActiveSheet.OLEObjects("CheckBox" & I).Object.Value = True Then
ReDim Preserve ArrySheet(k)
ArrySheet(k) = ActiveSheet.DrawingObjects("CheckBox" & I).Object.Caption
k = k + 1
End If
Next I
For Each cc In ArrySheet '<----確認用に入れてみる。こういうことをすることがデバッグで大切
MsgBox cc
Next
ThisWorkbook.Worksheets(ArrySheet).PrintOut '←エラー(インデックスが有効範囲にありません)
Erase ArrySheet
End Sub
上記のMsgbox no表示が質問者の思っている表示(シート名のはずだが)と正しいですか。
私は不自然だがチェックボックスのCaptionをSheetXXにそれぞれ変えて実行して、印刷は行われた。
ーー
わたしのテスト
Sheet1-Sheet4のシートとあり。
Sheet1に3つチェックボックスを貼り付け。2つだけON
ChechBox1のCaption-->Sheet2
ChechBox2のCaption-->Sheet3
ChechBox3のCaption-->Sheet4
このステップが行われていないか、Sheet名と食い違うのでは。
    • good
    • 0
この回答へのお礼

imogasi様

ご回答ありがとうございました。
ご指摘の通り、シート名に誤記がありました。
確認不足でした。。
今後はデバックしていくスキルも勉強します。

お礼日時:2011/04/28 11:50

とりあえず見た感じの範囲には間違いはありませんので,各チェックボックスのCaptionに誤記が無いか,正しくシート名を記入できているか,念入りに再確認してください。

    • good
    • 0
この回答へのお礼

keithin様

ご回答ありがとうございました。
ご指摘の通り、シート名に誤記がありました。
確認不足でした。。

お礼日時:2011/04/28 11:48

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

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

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

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

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

QEXCEL VBA ワークシートのコピーについて

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピー先BOOKに

         ワークシート名
ワークシート1 処理1ワークシート 
ワークシート2 処理2ワークシート
ワークシート3 処理3コピー元ワークシート3

という具合にワークシートを複数コピーしたいのですが

処理ごとにデータを代入し、コピー処理はできるのですが。

コピー先BOOK

ワークシート3 処理3ワークシート

だけしかコピーされてないBOOKが作成されます。
上書きされているのだと思われます。

対処法が調べましたが見つけられていません。

すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピ...続きを読む

Aベストアンサー

今どういうコードを書いているのか不明なので、とりあえず
「1つのシートを別のブックに複数回コピーする」ための参考ソースを書きます。
コピー元のブックに下記ソースを貼り付けて実行してもらえば
新規ブックにコピー元のシートが3枚コピーされると思います。
(新規ブックを追加しているのでシート数は3枚より多くなります)

Sub copySheet()
Dim masterWb As Workbook
Dim masterSh As Worksheet
Dim copyWb As Workbook

Set masterWb = ThisWorkbook
Set masterSh = masterWb.Sheets(1)
Set copyWb = Workbooks.Add

'ここからが実際のコピー処理です。
'単純に3回コピーメソッドを呼び出して3回コピーしています。
masterSh.Copy before:=copyWb.Sheets(1)
masterSh.Copy before:=copyWb.Sheets(1)
masterSh.Copy before:=copyWb.Sheets(1)

End Sub

今どういうコードを書いているのか不明なので、とりあえず
「1つのシートを別のブックに複数回コピーする」ための参考ソースを書きます。
コピー元のブックに下記ソースを貼り付けて実行してもらえば
新規ブックにコピー元のシートが3枚コピーされると思います。
(新規ブックを追加しているのでシート数は3枚より多くなります)

Sub copySheet()
Dim masterWb As Workbook
Dim masterSh As Worksheet
Dim copyWb As Workbook

Set masterWb = ThisWorkbook
Set masterSh = masterWb.Sheets(1)
Set copyWb = W...続きを読む

Qフォルダ内の複数ブック・シートを一括保護/解除する

フォルダの中に複数のExcelファイル(ブック)が入っており、
それら全てのブック・シートの保護/解除を一括して行うマクロを現在使用しています。(後述)



<現在の利用状況>
◆フォルダの中に複数のExcelファイル(ブック)が入っている(雛形、シート構成は全て同じ)
◆全てのブックにパスワード付きでブック保護・シート保護をかけている→パスワードは共通(1111)
◆マクロ用ブックは上記の処理対象ブックとは別フォルダに入れている
(現在のVBAでは同一フォルダ内に入れた状態では作動しない)
◆マクロを実行する都度、任意のフォルダを選択する


<改善希望>
◆マクロ用ブックと処理対象のブックを同一フォルダに入れた状態で作動するようにしたい
(同一フォルダ内の自ブック以外のブックに対してブック・シートの保護/解除を一括処理したい)



VBA初心者なので構文をどう書き換えるかで行き詰っています。
ThisWorkbook.Path を使うというのはなんとなく分かりますが、
何パターンか試してエラーの繰り返しです…。

ご教示頂けます様お願いいたします。


-------------------------------------------------------------------------
Sub 選択フォルダ内全て保護()
Dim myFol As Object, myFile As Object, sh As Worksheet
Dim openFilePath As String
Const myPass As String = "1111"
Set myFol = CreateObject("Shell.Application").BrowseForFolder(0, "フォルダを選択してください", 0)
If myFol Is Nothing Then Exit Sub
Application.ScreenUpdating = False
openFilePath = myFol.self.Path & "\"
With CreateObject("Scripting.FileSystemObject")
For Each myFile In .GetFolder(openFilePath).Files
If .GetExtensionName(myFile.Path) = "xls" Then
With Application.Workbooks.Open(myFile.Path)
For Each sh In .Worksheets
sh.Protect Password:=myPass, DrawingObjects:=False, Contents:=True, Scenarios:=True, _
AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True, _
AllowInsertingRows:=True, AllowSorting:=True, AllowFiltering:=True, AllowUsingPivotTables:=True
Next sh
.Protect Password:=myPass, Structure:=True, Windows:=False
.Save
.Close False
End With
End If
Next myFile
End With
MsgBox "終了しました"
End Sub

-------------------------------------------------------------------------

Sub 選択フォルダ内保護全て解除()
Dim myFol As Object, myFile As Object, sh As Worksheet
Dim openFilePath As String
Const myPass As String = "1111"
Set myFol = CreateObject("Shell.Application").BrowseForFolder(0, "フォルダを選択してください", 0)
If myFol Is Nothing Then Exit Sub
Application.ScreenUpdating = False
openFilePath = myFol.self.Path & "\"
With CreateObject("Scripting.FileSystemObject")
For Each myFile In .GetFolder(openFilePath).Files
If .GetExtensionName(myFile.Path) = "xls" Then
With Application.Workbooks.Open(myFile.Path)
For Each sh In .Worksheets
sh.Unprotect Password:=myPass

Next sh
.Unprotect Password:=myPass
.Save
.Close False
End With
End If
Next myFile
End With
MsgBox "終了しました"
End Sub

-------------------------------------------------------------------------

フォルダの中に複数のExcelファイル(ブック)が入っており、
それら全てのブック・シートの保護/解除を一括して行うマクロを現在使用しています。(後述)



<現在の利用状況>
◆フォルダの中に複数のExcelファイル(ブック)が入っている(雛形、シート構成は全て同じ)
◆全てのブックにパスワード付きでブック保護・シート保護をかけている→パスワードは共通(1111)
◆マクロ用ブックは上記の処理対象ブックとは別フォルダに入れている
(現在のVBAでは同一フォルダ内に入れた状態では作動しない)
◆マクロを実行する...続きを読む

Aベストアンサー

こんな感じでどうでしょうか?


'-------------------------------------------------
Sub 選択フォルダ内保護全て解除()
Dim myFol As Object, myFile As Object, sh As Worksheet
Dim openFilePath As String
Const myPass As String = "1111"
'Set myFol = CreateObject("Shell.Application").BrowseForFolder(0, "フォルダを選択してください", 0)
'If myFol Is Nothing Then Exit Sub
Application.ScreenUpdating = False
openFilePath = ThisWorkbook.Path & "\" '←変更
With CreateObject("Scripting.FileSystemObject")
For Each myFile In .GetFolder(openFilePath).Files
If .GetExtensionName(myFile.Path) = "xls" And openFilePath & ThisWorkbook.Name <> myFile.Path Then '←変更
With Application.Workbooks.Open(myFile.Path)
For Each sh In .Worksheets
sh.Unprotect Password:=myPass
Next sh
.Unprotect Password:=myPass
.Save
.Close False
End With
End If
Next myFile
End With
MsgBox "終了しました"
End Sub
'-------------------------------------------------
Sub 選択フォルダ内全て保護()
Dim myFol As Object, myFile As Object, sh As Worksheet
Dim openFilePath As String
Const myPass As String = "1111"
'Set myFol = CreateObject("Shell.Application").BrowseForFolder(0, "フォルダを選択してください", 0)
'If myFol Is Nothing Then Exit Sub
Application.ScreenUpdating = False
openFilePath = ThisWorkbook.Path & "\" '←変更
With CreateObject("Scripting.FileSystemObject")
For Each myFile In .GetFolder(openFilePath).Files
If .GetExtensionName(myFile.Path) = "xls" And openFilePath & ThisWorkbook.Name <> myFile.Path Then '←変更
With Application.Workbooks.Open(myFile.Path)
For Each sh In .Worksheets
sh.Protect Password:=myPass, DrawingObjects:=False, Contents:=True, Scenarios:=True, _
AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True, _
AllowInsertingRows:=True, AllowSorting:=True, AllowFiltering:=True, AllowUsingPivotTables:=True
Next sh
.Protect Password:=myPass, Structure:=True, Windows:=False
.Save
.Close False
End With
End If
Next myFile
End With
MsgBox "終了しました"
End Sub
'-------------------------------------------------

こんな感じでどうでしょうか?


'-------------------------------------------------
Sub 選択フォルダ内保護全て解除()
Dim myFol As Object, myFile As Object, sh As Worksheet
Dim openFilePath As String
Const myPass As String = "1111"
'Set myFol = CreateObject("Shell.Application").BrowseForFolder(0, "フォルダを選択してください", 0)
'If myFol Is Nothing Then Exit Sub
Application.ScreenUpdating = False
openFilePath = ThisWorkbook.Path & "\" '←変更
With CreateObject("Scripting.File...続きを読む

Qエクセル 他のファイル(ブック)へシートをコピー

エクセル(2003)で他のファイル(ブック)にシートをコピーする場合,コピー元のシートに他のシートの値を参照するセルがあると,コピー後のシートに参照エラーが起きてしまいます.
これを回避するため,コピー元のシートを全選択してコピーし,コピー先で「形式を選択して貼り付け→数値と数値の書式」をした後,再度コピー元のシート全選択コピーし,コピー先で「形式を選択して貼り付け→書式」とする,という方法で今は作業していますが,一発でできる方法はないでしょうか.
もちろん,コピー先にコピー元の数式を反映させる必要はなく,値がコピーできればOKです,

Aベストアンサー

ワークシートを他のブックにコピーする方法ですが
>コピー先にコピー元の数式を反映させる必要はなく,値がコピーできればOKです,
「反映させる必要が無く」という部分を「反映させてもかまわない」と
解釈すれば
コピー元ブックとコピー先ブックの両方を同時に開いておきます。(コピー先ブックを新規作成する場合は、コピー先ブックは開いておく必要はありません)
コピー元ブックのコピーするワークシートをアクティブにしてメニューバー[編集]~[シートの移動またはコピー]
「シートの移動またはコピー」ダイアログボックスで
「移動先ブック名」の項目で移送先ブックを選びます、新しく作成する場合は「(新しいブック)」を選びます。
「挿入先」の項目で、コピーするシートを挿入する位置を選びます。
「コピーを作成する」項目にチェックを入れます。
[OK]ボタンをクリック
これでワークシートごとコピーすることができます。

ただし、コピー元ブックのほかのワークシートを参照している箇所は、そのまま外部ブックへの参照となっていますので、コピー元ブックを変更した場合、コピーブック先ブックにも反映されてしまいます。

これが不都合なら
コピー先ブックで
メニューバー[ツール]~[オプション]で
「オプション」ダイアログボックスの「計算方法」タブの中の
項目「外部リンクの値を保存する」にチェックが入っていることを確認したうえで
メニューバー[編集]~[リンクの設定]で
「リンクの編集」ダイアログボックスの[起動時の確認]ボタンをクリック
「起動時の確認」ダイアログボックスの[メッセージを表示しないで、リンクの自動更新も行わない]を選択し[OK]ボタンをクリックします。

こうしておけばリンクの手動更新をしない限り、コピー元ブックを変更しても反映されませんし、コピー元ブックをフォルダの移動やあるいは削除してしまっても、参照エラーになることはありません

ワークシートを他のブックにコピーする方法ですが
>コピー先にコピー元の数式を反映させる必要はなく,値がコピーできればOKです,
「反映させる必要が無く」という部分を「反映させてもかまわない」と
解釈すれば
コピー元ブックとコピー先ブックの両方を同時に開いておきます。(コピー先ブックを新規作成する場合は、コピー先ブックは開いておく必要はありません)
コピー元ブックのコピーするワークシートをアクティブにしてメニューバー[編集]~[シートの移動またはコピー]
「シートの移動またはコピ...続きを読む

QVBAでエクセルシートのPrint指示は実務的に何件程度まで可能でしょうか?

データの入ったシートからPrint用のシートにデータをDo Loopで、1件ずつ取り出し、1データで1枚、1回ごとにPrintするマクロを作成しました。
テストで10件程度はやってみて作動は確認済みです。
しかし気になるのは、本番では数千件のPrintになることです。

そんな大量な回数のPrint指示をこれまでやったことがありません。これまでは最大で100データ程度でした。
件数が多いので(紙がむだになるので)事前にテストするわけにもいきません。
プリンターの性能にもよるのでしょうが、数千件のPrint指示をしても大丈夫なものでしょうか?プリンターはレーザープリンターでRIKOH IPSIOのNX610か、Cannonの同程度のものです。

なお、当然ながら途中で用紙切れになりますが、これは手動でトレイの用紙を補給する予定です。

Aベストアンサー

Windowsのプリントスプールにデータがたまるだけなので、ディスクに空きがあれば何千ページのプリントでもOS上は問題はないと思いますが、プリンタがPrintメソッド実行速度ほど早く印刷はできませんので(A4横20枚/分)、何枚か印刷したらSleepもしくはWaitさせる方が良いのではないでしょうか。

Printメソッド実行と印刷速度がある程度同期している方が、何かと対処がし易いと思います。(処理中断時の判断など)

回答になっていなくてすみません(^^;

QEXCEL VBA ワークシートのコピーについて

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピー先BOOKに

         ワークシート名
ワークシート1 処理1ワークシート 
ワークシート2 処理2ワークシート
ワークシート3 処理3ワークシート

という具合にワークシートを複数コピーしたいのですが

処理ごとにデータを代入し、コピー処理はできるのですが。

コピー先BOOK

ワークシート3 処理3ワークシート

だけしかコピーされてないBOOKが作成されます。
上書きされているのだと思われます。

対処法が調べましたが見つけられていません。

すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピ...続きを読む

Aベストアンサー

> 配列にワークシートのオブジェクトを入れることとか可能なのでしょうか?

それは多分できないと思います。


> 複数のセル・シートを何回もコピーする場合にでるらしいです。

多分、メモリをたくさん使っちゃってるせいでしょうね。
まず、メモリ使用を減らすようにしましょうか。

・testwriteの最後にオブジェクト変数のメモリ解放を行う。
 具体的には以下のように書く。もうやってたらすみません。
Set cbook = Nothing
Set mastersheet = Nothing
・testwriteの中でのブックオープンおよび保存をやめる。
 新規ブックのオープンをtestwriteを呼ぶ前に1度だけ行い、
 testwriteの中ではその新規ブックに対してシートを追加していく。
 そしてtestwriteの処理が全部終わったら、
 新規ブックの全シートを1度に「記録シートYYYY/MM/DD.xls」にコピーする。

それでも駄目でしたら、以下の回答No.1を試してみてください。
http://oshiete.goo.ne.jp/qa/1822561.html

> 配列にワークシートのオブジェクトを入れることとか可能なのでしょうか?

それは多分できないと思います。


> 複数のセル・シートを何回もコピーする場合にでるらしいです。

多分、メモリをたくさん使っちゃってるせいでしょうね。
まず、メモリ使用を減らすようにしましょうか。

・testwriteの最後にオブジェクト変数のメモリ解放を行う。
 具体的には以下のように書く。もうやってたらすみません。
Set cbook = Nothing
Set mastersheet = Nothing
・testwriteの中でのブックオープンおよび保存をやめ...続きを読む

Q複数のCSVファイルを読み込んで複数シートを1ブックとしたい

始めまして。
VBA初心者です。
2枚のCSVファイルをダイアログで各々指定し、保存する2枚のシートを1ブックにまとめたいのですが、うまくいきません。
現状は以下のようなマクロですが、別々のシートとなります。
よろしくお願い致します。

Sub 選択されたPDPファイルを開いて読み込む()
With Application.FileDialog(msoFileDialogOpen)
.Title = "ファイルを選択して[OK]ボタンをクリックしてください"
.AllowMultiSelect = False '複数選択不可
.Filters.Clear
.Filters.Add "1枚目", "*.csv", 1
If .Show = -1 Then .Execute 'キャンセルでなければ開く
End With

With Application.FileDialog(msoFileDialogOpen)
.Title = "2つめのファイルを選択して[OK]ボタンをクリックしてください"
.AllowMultiSelect = False '複数選択不可
.Filters.Clear
.Filters.Add "2枚目", "*.csv", 1
If .Show = -1 Then .Execute 'キャンセルでなければ開く


End With
End Sub

始めまして。
VBA初心者です。
2枚のCSVファイルをダイアログで各々指定し、保存する2枚のシートを1ブックにまとめたいのですが、うまくいきません。
現状は以下のようなマクロですが、別々のシートとなります。
よろしくお願い致します。

Sub 選択されたPDPファイルを開いて読み込む()
With Application.FileDialog(msoFileDialogOpen)
.Title = "ファイルを選択して[OK]ボタンをクリックしてください"
.AllowMultiSelect = False '複数選択不可
.Filter...続きを読む

Aベストアンサー

こんにちは。

こちらにはレスはつかないかもしれませんが、コードを出しておきます。
ファイルオープン・ダイアログで、複数のCSVファイルを選択してください。
マルチセレクトにしてあります。


'標準モジュール

Sub CSVImportSheets()
Dim FileNames As Variant
Dim fn As Variant

 FileNames = Application.GetOpenFilename _
  ("CSV(*.csv),*.csv", MultiSelect:=True)
 If VarType(FileNames) = vbBoolean Then Exit Sub
 
 For Each fn In FileNames
  Worksheets.Add After:=Worksheets(Worksheets.Count)
  With ActiveSheet.QueryTables.Add(Connection:= _
    "TEXT;" & fn, _
    Destination:=Range("A1"))
    .Name = ActiveSheet.Name
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .RefreshStyle = xlInsertDeleteCells
    .SaveData = True
    .AdjustColumnWidth = False
    .RefreshPeriod = 0
    .TextFilePromptOnRefresh = False
    .TextFilePlatform = 932
    .TextFileStartRow = 1
    .TextFileParseType = xlDelimited
    .TextFileTextQualifier = xlTextQualifierDoubleQuote
    .TextFileConsecutiveDelimiter = False
    .TextFileTabDelimiter = False
    .TextFileCommaDelimiter = True
    .TextFileTrailingMinusNumbers = True
    .Refresh BackgroundQuery:=False
  End With
    ActiveSheet.UsedRange.QueryTable.Delete
 Next fn
End Sub

こんにちは。

こちらにはレスはつかないかもしれませんが、コードを出しておきます。
ファイルオープン・ダイアログで、複数のCSVファイルを選択してください。
マルチセレクトにしてあります。


'標準モジュール

Sub CSVImportSheets()
Dim FileNames As Variant
Dim fn As Variant

 FileNames = Application.GetOpenFilename _
  ("CSV(*.csv),*.csv", MultiSelect:=True)
 If VarType(FileNames) = vbBoolean Then Exit Sub
 
 For Each fn In FileNames
  Worksheets.Add After...続きを読む

Qワークシートを別ファイルにコピー出来ない

エクセル2010です。
コピー元ファイルを開き、ファイルメニュー→新規→空白のブック
により新ファイルを開き、コピー先ファイルとして名前を付けて保存、
コピー元ワークシートを選択しシートコピーしようとすると、以下のエラー表示があります。

文面忘れましたが、
コピー元とコピー先でワークシートの行列数が異なるため、コピー出来ない。ワークシートでなくデータを選択し、コピー&ペーストせよ。

ちなみに、作成したコピー先ファイルを一旦閉じて再度開くと、何故か普通にワークシートコピー出来ます。

メッセージに従うとセル幅や印刷範囲の設定がコピーされないので、やりたくありません。
普通にシートコピーしたいのです。一旦閉じて再度開くなどという動作は回避出来ないのでしょうか?

Aベストアンサー

先にコピー先のファイルを作成するのではなく、
コピーしたいシート見出しを右クリック
「移動またはコピー」をクリック
移動先Book名「新しいBook」
「コピーを作成する」にチェック

ではどうでしょうか?

これでもうまくいかなければ、、同様に作業するほかないのかもしれません。

Qセルの検索方法を御教授願います。(見難くてすいません)

毎々皆様の御教授感謝しております。
さて、題記の件、月間予定表なるを作成中しているのですが・・・


 予定リスト      カレンダー
| |   |    | 1日  | 2日  |
| |   |    |---- |---- |
| |   |    | |   | |   |
|予| 予 |   作|予| 予 |予| 予 |
|定| 定 |   業|定| 定 |定| 定 |
|番| 内 |   者|番| 内 |番| 内 |
|号| 容 |   A|号| 容 |号| 容 |
| |   |    | |   | |   |
| |   |    |-----|-----|
| |   |    | |   | |   |
| |   |   作|予| 予 |予| 予 |
| |   |   業|定| 定 |定| 定 |
| |   |   者|番| 内 |番| 内 |
| |   |   B|号| 容 |号| 容 |
| |   |    | |   | |   |
| |   |    |-----|-----|

上記のような形で、カレンダー部の予定番号を入力し、「VLOOKUP」で予定リストを参照し予定内容をカレンダーに反映させています。
ここでカレンダー部へ予定番号の入力漏れの無いように予定リストの横にチェックを入れる為に
=IF(A3=I3,"入力済み",IF(A3=I4,"入力済み",IF(A3=I4,"入力済み",IF(A3=I5,"入力済み",IF(A3=I6,"入力済み",IF(A3=I7,"入力済み",IF(A3=I8,"入力済み",IF(A3=L3,"入力済み"・・・,"未入力")・・・)))
と考えましたが「IF」は7つまでなんですね。何か良い関数は無いものでしょうか?
可能であれば「入力」「未入力」を表示させるのでなく、カレンダー部へ入力した日付を表示させたく考えております。
長くなってしまいましたが宜しくお願い致します。

毎々皆様の御教授感謝しております。
さて、題記の件、月間予定表なるを作成中しているのですが・・・


 予定リスト      カレンダー
| |   |    | 1日  | 2日  |
| |   |    |---- |---- |
| |   |    | |   | |   |
|予| 予 |   作|予| 予 |予| 予 |
|定| 定 |   業|定| 定 |定| 定 |
|番| 内 |   者|番| 内 |番| 内 |
|号| 容 |   A|号| 容 |号...続きを読む

Aベストアンサー

    A    B    C     I    J  K     L
1 予定リスト             1日       2日
2 予定番号 予定内容       予定番号 予定内容 予定番号 予定内容
3  1010  あああ102  <式>   5010 えええ999
4  1020  あああ103 入力済み   3990 えええ777
5  9990  あああ201        1020 あああ103
6  9980  あああ205 入力済み   9980 あああ205
7  5010  えええ999 入力済み
8  4010  えええ888
9  3990  えええ777 入力済み

上のような表を想定します。
カレンダー部は31日まであって、I列からBR列とします。

J3セルには =VLOOKUP(I3,$A:$B,2,0) が入ります(既にこうなっている?)

C3セルには =IF(COUNTIF($I:$BR,A3)<>0,"入力済み","")

として、必要な行数、下方向にコピーします。

質問には書いてありませんが、予約番号には重複はないだろうとの予測で、
入力範囲内の該当予約番号をカウントしています。1つでもあれば入力済みにしています。

    A    B    C     I    J  K     L
1 予定リスト             1日       2日
2 予定番号 予定内容       予定番号 予定内容 予定番号 予定内容
3  1010  あああ102  <式>   5010 えええ999
4  1020  あああ103 入力済み   3990 えええ777
5  9990  あああ201        1020 あああ103
6  9980  あああ205 入力済み   9980 あああ205
7  5010  えええ999 入力済み
8  401...続きを読む

QEXCELシートのコピー

あるExcelブックに統計表シート、グラフシート、グラフ用の数値シートがあります。

グラフシートだけ別の場所にコピーすると、コピーしたグラフシートのブックを開いたとき、このグラフシートはコピー元の数値シートにリンクしたままになりますが、このリンクを無効にしてシートコピーする方法はありますか。

Aベストアンサー

こんにちは。

グラフを、セルの値にリンクしないカタチにしたい
という主旨であると判断しました。

グラフをまず選択してください。

そしてShiftを押しながら、メニューの[編集]を選択すると、
「図のコピー」というメニューが現れます。

これをクリックすると、ダイアログが現れますが、
そのままOKします。

そして、シートの何もない部分をクリックします。

そして、メニューから
 編集-貼り付け
で、セルの値にリンクしないグラフ
(正確に言うとこれはグラフの「画像」です)
が貼り付けられます。

QエクセルVBAでLineの一括処理

ワークシート上に配置した複数のオートシェープの線(Lines)に対し、一括して太さと色を変えるにはどのようなコードになるのでしょうか?

勿論以下のTEST01のように名前で指定すれば可能なのですが、TEST02のような全てのLineということはできないのでしょうか?

Sub Test01()
With ActiveSheet.Shapes.Range(Array("Line 259", "Line 260"))
.line.Weight = 1.75
.line.ForeColor.SchemeColor = 13
End With
End Sub

↓実行時エラーとなる
Sub Test02()
With ActiveSheet.Lines
.line.Weight = 2.5
.line.ForeColor.SchemeColor = 10
End With
End Sub

Aベストアンサー

こんばんは。

「実行時エラー'1004'アプリケーション定義またはオブジェクト定義エラーです」
ということですね。

今、XL2000, XL200両方試してみましたが、エラーは出ず、そのまま実行できます。また、OSもWin98で試してみたり、モジュールを変えてみたりしましたが、エラーが再現できません。何か、別の要因が働いているようです。

>数が多いので、出来ればループは避けたいのです。
ってありましたが、もしかして、実際は、もう描いたり・消したりを数多く繰り返していませんか? 新規のシートにすればできるものでも、あまり数多く、オートシェイプを入れだししていると、調子が悪くなることがあります。そうなると、そのままでは直しようがないような気がしますね。

With ActiveSheet.Lines '←ここまでは、確保できるのでしょうか?
 With .ShapeRange '←ここは?


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

人気Q&Aランキング

おすすめ情報