環境はExcel97+Win2000を使用しています。
基本的に【データ】と【ログ】というシートがあって
動作は
データ入力後ボタン押下で結果をログに出力するという内容なのですが、
【ログ】シート作成部分の動作が思うようにいかないので2つ質問させてください。
''以下ログシート作成部分のVBAソース
' 既存のログシートを削除する
'☆↓
Set DS1 = Worksheets("ログ")
Application.DisplayAlerts = False
DS1.Delete
Application.DisplayAlerts = True
'☆↑
'ログシートを作成する
Set LS1 = Worksheets.Add(after:=Worksheets("データ"))
Sheets("データ").Select'★
LS1.Name = "ログ"
質問1
このソースでは、あらかじめ空の【ログ】シートがないと「☆部分」でエラーになってしまうのですが、
『【ログ】シートが無い時は「☆部分」をパスする』とような関数ってありませんか?
質問2
【ログ】シートを作成しても【データ】シートを表示のままでいて欲しいのですが『Set LS1 =・・・』の部分を実行すると【ログ】シートを表示してしまいます。
今は『★行』を書いて対応しているのですが
画面がちらついてかっこ悪いんです。ですので画面をちらつかせない方法は知りませんか?
この2つでもう2週間悩んでいます。。。
助けて下さい。よろしくお願いします。。。
No.4
- 回答日時:
> ScreenUpdatingではなくApplication.ScreenUpdatingで解決しました。
ごめんなさい。
> けど、【ログ】シートを消して書いた後は、どうしても【ログ】シートを表示してしまうんですね…
> 完了後に=Trueで復旧させたとたん待ってましたとばかりに…
マクロをキックするときに選択されているシート名を保存しておいて、
Application.ScreenUpdating=Trueの直前の行で
Worksheets(元のシート名).Selectを書くといかがですか?
この回答への補足
>Worksheets(元のシート名).Selectを書くといかがですか?
Sheets("データ").Select
ですよね…
画面が一瞬ちらつくんですよ。
ですのでこのちらつきをどうにか出来ないかという事です…
No.3
- 回答日時:
シートが無い時の処理ですが
エラーコードは分かりませんが
エラー処理をしてはどうですか。
「エラーが発生したらAへ」
としてエラー監視を開始。
エラー時は、
エラー(シート削除エラー)なら
処理をして
a.次の行から先に進む
b.もう一度やり直す
c.指定行からすすむ(たしか)
のうちひとつを選ぶということができます。
エラー監視スタート
On Error GoTo エラー処理名
エラー監視解除
On Error GoTo 0
エラー判断
Select Case Err.Number
Case 53 '53 not fonund
エラーからの戻り方
Resume Next
ちらつきは#1の方に賛成です。
画面更新ストップ
ScreenUpdating=False
復旧
ScreenUpdating=True
trueで必ず戻してください。
これでも少しちらつくカンジはしますが
これしかないですね。
No.2
- 回答日時:
実行時にブックの何番目かにログシートが有る場合の削除
Dim i As Integer
For i = 1 To Worksheets.Count
If Worksheets(i).Name = "ログ" Then
Worksheets(i).Delete
Exit For
End If
Next
または、ログシートがある場合必ず最後にあるという場合は
If Worksheets(Worksheets.Count).Name = "ログ" Then
Worksheets("ログ").Delete
End If
ログシートの作成
Worksheets.Add after:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Name = "ログ"
データシートをアクティブ化
Worksheets("データ").Activate
データシート → ログシート → データシートと
アクティブになるのがカッコ悪いのであれば処理の最初に
ブックを閉じて最後にブックを開くという手は?
ブックの最小化
ActiveWindow.WindowState = xlMinimized
ブックの最大化
ActiveWindow.WindowState = xlMaximized
回答ありがとうございます。
シートが複数なので
For i = 1 To Worksheets.Count…を使用しようと思います。
ありがとうございました。
No.1ベストアンサー
- 回答日時:
> LS1.Name = "ログ"
最後のシートを指すのだからSheets(Worksheets.Count)で良かったカナ?
Sheets(Worksheets.Count)="ログ"
試験してませんので間違ってたらごめんなさい。
> 画面がちらついてかっこ悪いんです。ですので画面をちらつかせない方法は知りませんか?
実行前にScreenUpdating=Falseを設定してください。
一連の処理後にはScreenUpdating=Trueで復旧させてください。
ちらつきは無くなるし、再描画を行わない分処理速度が向上できます。
早速の回答ありがとうございます。
ScreenUpdatingではなくApplication.ScreenUpdatingで解決しました。
けど、【ログ】シートを消して書いた後は、どうしても【ログ】シートを表示してしまうんですね…
完了後に=Trueで復旧させたとたん待ってましたとばかりに…
もう少し考えてみます…
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Excel(エクセル) Excelでのデータ管理 6 2022/12/24 09:33
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Visual Basic(VBA) Excel VBA シートを追加後に余分なシートを削除する、の意味 21 2022/05/19 22:46
- Excel(エクセル) VBAのoffsetの動き方について教えてください 3 2022/11/25 23:36
- Visual Basic(VBA) Excel VBA 複数ブックシートごとにデータを統合する方法について 4 2022/05/20 14:23
- Visual Basic(VBA) セルの値からファイルを複数作りたい2 3 2022/10/07 15:54
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
括弧があるとHYPERLINKで飛べな...
-
エクセルで複数のシートをフォ...
-
建築模型、カーブの作り方
-
Excel複数シートから日付と文字...
-
エクセルVBA 4行飛ばしで転記す...
-
マグネットシートって・・・
-
バイクのシートを取り替えても...
-
ドライブレコーダーのSDカード...
-
Excel VBA シート名変更時、重...
-
PowerQuery(パワークエリ)のエ...
-
ポップコーンの捨て方
-
水の染み込んだバイクのシート...
-
原付 レッツシート開け方
-
EXCEL VBA 特定シート以外の...
-
車のシートでおもらし
-
マグナ250とマグナ50でパーツの...
-
XJR400 のシートを替えようと思...
-
芝生が根付かず苔ばかり生えて...
-
ノンストップCDの作り方
-
PET(ポリエチレンテレフタレー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで複数のシートをフォ...
-
括弧があるとHYPERLINKで飛べな...
-
電車のシートって何でこんな暑...
-
原付 レッツシート開け方
-
水の染み込んだバイクのシート...
-
シートベルトの固定解除
-
Excel複数シートから日付と文字...
-
ポップコーンの捨て方
-
BRIDEのシート張り替えってでき...
-
車のシートでおもらし
-
リアシート無しで運転してたら...
-
ポケットにミシンでワッペンを...
-
エクセルVBA 4行飛ばしで転記す...
-
メルセデスベンツ
-
【Excel Online】Excelデータの...
-
癒着してしまったテレビの液晶...
-
【Excel Online】特定シートの...
-
フォルツァ バッテリーを外して...
-
クルマのこのシートは走りのイ...
-
アルファード 7人乗りから8人...
おすすめ情報