☆☆アマ将棋道場☆☆【高段者向け将棋定跡研究】

▲4六銀左戦法(斜め棒銀,左4六銀戦法)▲6九金型vs四間飛車△4三銀型△4五歩変化を定跡研究中!将棋高段者向けの研究内容です。

VBAテクニック

[ リスト | 詳細 ]

記事検索
検索

全1ページ

[1]

更新履歴自動付与機能です。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
 With Worksheets("更新履歴" )
  ro = .Range("D65535" ) .End(xlUp) .Row + 1
  .Range("D" & ro) .Value = CreateObject("WScript.Network" ) .UserName
  .Range("C" & ro) .Value = ThisWorkbook.BuiltinDocumentProperties("Last save time" ) .Value
 End With
End Sub
仕事でExcelの資料を多数メンバーで共有している場合
会議に各自で資料を印刷して持参した場合に
新しいバージョンかどうかがわかるように
更新者と更新日時を記載することがよくあると思います。

しかし、べた書きすると、記入を忘れることもあり
どちらが新しいバージョンなのかがわからなくなることがあります。

そんなときは、保存時に更新者と更新日時の自動付与する機能をVBAで作ってしまいましょう。

ThisWorkbookを開いて下記コードを記載しておく。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Worksheets("Sheet1" ).Range("B1" ).Value = CreateObject("WScript.Network" ).UserName
Worksheets("Sheet1" ).Range("B2" ).Value = ThisWorkbook.BuiltinDocumentProperties("Last save time" ).Value
End Sub

(注意)使用の際は、表示したいシート名、セル位置を各自で修正してください。
    また、更新不可領域を設定しておけば、なお安全でしょう。

これでマクロを無効化orシート名を変えられない限り大丈夫だと思います。
Replace関数を使い改行シーケンスChr(10)を""に置き換えることで可能。
以下の例はセルA1の改行文字列を削除して、セルA2に代入します。

range("A1").select
range("A2").value=replace("A1").value,chr(10),"")
■再計算を手動に設定する(式が入っていなくても効果有り)
ちなみに手動計算は、F9を押すと再計算してくれる。
Application.Calculation = xlCalculationManual
Application.Calculation = xlCalculationAutomatic

■再描画を止める
Application.ScreenUpdating = False '再描画を止める
Application.ScreenUpdating = true '設定を戻す
(特にセル操作するところ、グラフ描画処理では効果あり)
【注意】
・エラー発生で止まった場合は、イミディエイト・ウィンドウで True に変更
・ユーザーには画面変化がないので処理が長すぎるとフリーズと勘違いされます。
(処理途中で、trueにする方法も検討しましょう)
・またエラー処理終了処理部分にも記載しておくこと。

■シートとの受け渡し回数を減らす
1.Select、ActivateをやめてWithを使う
  
(例)Cells(11,1).Select
   selection.〜
    ↓
   with Cells(11,1)
    .〜
   end with

2.配列を使う(効果大)

3.配列ループはFor〜Nextではなく、For〜Eachで実施。
(どうしても2が無理な場合)

■同じ処理をしない
1..withを使う

■タイプ(型)を指定する。
1.Dim a as integer等
 ・Option Explicitを使えば型定義していない変数があればエラーを出してくれます。

2.Mid, Left, Right(Variant型)の返り値を文字列指定にする
  →Mid$, Left$, Right$(String型)

■Excel関数を使う
自分でコードを書くより、Excel関数は速度が速い。
WorksheetFunction.average(〜)
WorksheetFunction.VLookup(〜)

■ピボットテーブルの活用


(以下はExcel外の内容)-----------
■CPU処理の優先順位を上げる

■他のソフトを止める

'0は引っかからないが空白は引っかかる。
if rng.formula=empty then

'0も空白も引っかかる
if rng,value=empty then

全1ページ

[1]


.
アマ棋士
アマ棋士
男性 / 非公開
人気度
Yahoo!ブログヘルプ - ブログ人気度について
検索 検索
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

スマートフォンで見る

モバイル版Yahoo!ブログにアクセス!

スマートフォン版Yahoo!ブログにアクセス!

よしもとブログランキング

もっと見る

[PR]お得情報

いまならもらえる!ウィスパーWガード
薄いしモレを防ぐパンティライナー
話題の新製品を10,000名様にプレゼント
コンタクトレンズで遠近両用?
「2WEEKメニコンプレミオ遠近両用」
無料モニター募集中!
いまならもらえる!ウィスパーうすさら
薄いしモレを防ぐ尿ケアパッド
話題の新製品を10,000名様にプレゼント
ふるさと納税サイト『さとふる』
実質2000円で特産品がお手元に
11/30までキャンペーン実施中!

その他のキャンペーン


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事