Excel VBAは選択を再計算します
質問
データベースにかなり激しくヒットしているExcelスプレッドシートがいくつかあります(総勘定元帳のテーブルに対して100以上のクエリ... Yikes!)。私がオンになっているシート(Shift+F9)だけをリフレッシュすることは、いくつかのスプレッドシートで役立ちますが、選択したセルだけを更新する方法が必要でした。私は次のコードを思いつきました。
Dim currentSelection As String
Private Sub Workbook_Open()
Application.OnKey "+^{F9}", "ThisWorkbook.RecalculateSelection"
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
currentSelection = Target.Address
End Sub
Private Sub RecalculateSelection()
Range(currentSelection).Calculate
End Sub
可能であれば、XLAファイルに保存してExcel Addinとしてロードするなど、これをよりポータブルにしたいと思います。これは私が使用している方法で可能ですか?これを達成するためのより良い方法はありますか?
解決
以下を使用できるはずです。
Public Sub RecalculateSelection()
Dim rng As Range
Set rng = Application.Selection
rng.Calculate
End Sub
ユーザーが範囲を選択していない可能性があるため、「set rng」行の周りにエラー処理を行う必要があります(たとえば、チャートを選択した場合があります)。
アプリケーションオブジェクトを使用して、workbook_sheetselectionchangeイベントをキャプチャする必要はありません。
他のヒント
上記の受け入れられた回答からメソッドを使用している場合は、最初にそれを確認する必要があります...
If Not Selection Is Nothing Then
If TypeName(Application.Selection) = "Range" Then
Dim Rng As Range
Set Rng = Application.Selection
Rng.Calculate
End If
End If
また、シートとシート名のコンテキストメニューに追加することもできます。あなたがする必要がある2つのコマンドバーの名前は...「セル」と「プライ」です
現在選択されている細胞を再計算したい場合、それらに依存している細胞を無視している場合は、私のrangecalc addinを使用できます。http://www.decisionmodels.com/downloads.htm
所属していません StackOverflow