「NowLoading...」というテキストと背景色#000000 alpha = 0.5の形状で、FHD画面と同じ大きさです。
時間のかかる関数がユーザーによって実行されたときに表示し(ご覧のとおり、他の場所からデータをロードし、ダーティな作業を行った場合)、vbaがジョブを終了した後に再び非表示にすることを目的としていました。
ただし、最初はまったく表示されず、vbaが実行された後、フラッシュのように表示および非表示になります。
はい、私はMsgBoxを使用してすべてをチェックしました。実際には、最後に表示および非表示にするだけです。
質問:
1)それで、これは私だけに起こっているのですか?
2)(1)そうでない場合、なぜこれが起こっているのですか?シェイプ/OLEレイヤーは最後にのみ更新されますか(* 1)?技術的な詳細をいただければ幸いです。
3)この形状にその仕事をさせることを主張する場合、Excel 2007で可能ですか?そしてどうやって?
4)代替ソリューション(* 3)?言わないで。
Sheets("Sheet1").Range("A1").Value = "Now Loading..."
'balabala
Sheets("Sheet1").Range("A1").Value = "Finish!"
* 1)ここで「最後に更新する」とは、Excelがすべての図形の非表示/表示イベントを収集し、一度に実行することを意味します。ですから、時間のかかる機能で隠して同じ形を見せ続けると、まばたき点滅してしまいます〜
* 2)以下のコード例。私が共有できる最短のもの。'Notes
あなたが私がやろうとしていることを理解し、MsgBox
私のチェックポイントをあなたに示すために。
Sub Item_Genre_Reset_Revise()
'↓ Show the loading notification.
Sheets("Item.Genre").Shapes("OLE_Loading").Visible = True
MsgBox "I thought the shape would show now, but didn't."
'↓ Merge 3 pieces into 1 piece.
Application.ScreenUpdating = False
Sheets("Item.Genre").Range("AJ5:AL37").Value = Sheets("Item.Genre").Range("Q5:S37").Value
Sheets("Item.Genre").Range("AJ38:AL70").Value = Sheets("Item.Genre").Range("V5:X37").Value
Sheets("Item.Genre").Range("AJ71:AL103").Value = Sheets("Item.Genre").Range("AA5:AC37").Value
MsgBox "No. :("
'↓ Sort the mergerd one.
ActiveWorkbook.Worksheets("Item.Genre").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Item.Genre").Sort.SortFields.Add Key:=Range("AJ5:AJ103"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Item.Genre").Sort.SortFields.Add Key:=Range("AK5:AK103"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Item.Genre").Sort.SortFields.Add Key:=Range("AL5:AL103"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Item.Genre").Sort
.SetRange Range("AJ4:AL103")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
MsgBox "No. :( :("
'↓ Reload sorted items from internal memory to 3 pieces, as to give up all revise too for another function.
Call Item_Genre_Escape_Internal
MsgBox "No. :( :( :("
'↓ Reset revise counter.
Sheets("Item.Genre").Range("T41").Value = 0
MsgBox "No. :( :( :( :("
Application.ScreenUpdating = True
'↓ Hide the loading notification.
Sheets("Item.Genre").Shapes("OLE_Loading").Visible = False
MsgBox "Now the shape flash!"
End Sub
Sub Item_Genre_Escape_Internal()
Sheets("Item.Genre").Range("Q5:T37").Value = Sheets("Item.Genre").Range("AJ5:AM37").Value
Sheets("Item.Genre").Range("V5:Y37").Value = Sheets("Item.Genre").Range("AJ38:AM70").Value
Sheets("Item.Genre").Range("AA5:AD37").Value = Sheets("Item.Genre").Range("AJ71:AM103").Value
Sheets("Item.Genre").Range("T41").Value = 0
End Sub
* 3)すべてのシートにグローブを設定します。
Application.DisplayFormulaBar = False
ActiveWindow.DisplayHeadings = False
ActiveWindow.DisplayHorizontalScrollBar = False
ActiveWindow.DisplayVerticalScrollBar = False
Application.DisplayStatusBar = False
ActiveWindow.DisplayWorkbookTabs = False
Worksheets("Item.Genre").Protect Password:="******", _
UserInterfaceOnly:=True
どうもありがとうございます。
解決:
それぞれに追加Application.Wait Now + TimeValue("00:00:01")
しますSheets("Item.Genre").Shapes("OLE_Loading").Visible = True
。形状は設計どおりに表示されますが、それでも1〜2秒の遅れがあります。理由はわかりません。