• ベストアンサー

エラーの場合次のsheetへ

以下の構文でShapes(maxno)をシートからから検索して図形名とテキスト名を変更したいと考えています。 今の状態ではアクティブシートからしか出来ず、探したいShapes(maxno)が他のシートに有る場合はエラーとなって停止してしまいます。 そこで、エラーの場合は他のシートを次々に検索し(数は変動します。)発見したら最初のページに戻り、Loopが終わるまで同じ動作を繰り返すにはどの様にしたらいいのでしょうか。 宜しくお願い致します。 (manno、minno、newnoはセルから取得 ) If minno > 10 Then Do While maxno >= minno ActiveSheet.Shapes(maxno).Select Selection.Name = newno Selection.Characters.Text = newno maxno = maxno - 1 newno = newno - 1 Loop End If

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

  • ベストアンサー
  • pu--n
  • ベストアンサー率56% (32/57)
回答No.2

こんにちわ。 やりたいことの察しはつきます。 on error ステートメントを使用すればエラー発生時の対応ができます。 VBAのヘルプに詳細は記述されています。(例 on error goto err_routine) あと、こんなことも考慮してやってみてはいかがでしょうか -ativeなシートを切り替えずに他のシート上の情報を参照する方法 Sheets("sheet1").Shapes(maxno).Name = newno "sheet1"はシート名かシート番号 -ブック中のシート数のおよびシート名の取得方法 Dim sheet_number As Integer 'ブック中のシート数 Dim sheet_name As String 'シート名 sheet_number = Sheets.Count 'ブック中のシート数の取得 sheet_name = ActiveSheet.Name 'アクティブシート名の取得 これらをうまく使えば何とかなります。あとNO1のリンク先も参照して・・。 これ以上は、丸投げになりかねないので。あしからず・・

ae-1sp
質問者

お礼

シート切替をしない方法は他にも色々使えますね! それ以外にも取得方法まで教えていただきありがとうございます。 これだけ教えていただくと出来ます。 ありがとうございます。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.1

質問の意味がわからないが Object.Previous 前のシート 取得のみ Object.Next 後のシート 取得のみ ObjectはActivesheetなど、のことか。 http://officetanaka.net/excel/vba/tips/tips70.htm >最初のページに戻 ページという言う表現でよいの?。エクセルにはページは印刷との関連のPageBreakとの関連でしか使えないよ。そのことをいっている?

ae-1sp
質問者

お礼

>ページ すみません。ページではなくシートの間違いでした。 Nextは何とか判ったんですが、Previousが判りませんでした。これとNo2さんon Errorを組み合わせると出来ます。 ありがとうございます。

すると、全ての回答が全文表示されます。

関連するQ&A