misc.log

日常茶飯事とお仕事と

Excel VBAでペーストを検出する

※結論に到達していません。未解決。

teratailで、Excelでペーストを禁止したい、それも特定セルや列だけという質問が出ていました。

teratail.com

興味あったので少し調べてみたところ、Google検索「excell イベント paste」でstackoverflowの下記質問が出てきて……

stackoverflow.com

さらに、過去の下記質問回答が出てきました。

stackoverflow.com

ここで提示されているのは、ワークシートのチェンジイベントで

  • CommandBarの「"Standard"」→ Controls「"&Undo"」にあるアンドゥリストを見る。
  • アンドゥリストの1番目、先頭が「Paste」で始まる項目があれば「ペースとしようとしている」ということが検出できる。

という方針。ま、このあと実際にはペーストをキャンセルできるかといった話があるのですが、残念ながら今使っているOffice2016の日本語版ではこの回答にあった下記サンプルコードはそのまま動きませんでした。

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim UndoList As String

  '~~> Get the undo List to capture the last action performed by user
  UndoList = Application.CommandBars("Standard").Controls("&Undo").List(1)

  '~~> Check if the last action was not a paste nor an autofill
  If Left(UndoList, 5) = "Paste" Then
    'Do stuff
  End If
End Sub

デバッガーで追ってみたところ、Application,CommandBarsの「"Standard" 」はItem(10)にあり、また、&UndoはCaptionプロパティ「元に戻す??(&)」としてItem(14)にあるので、日本語と英語の違いかと思ったのですがうまくアクセスできず。また、Undo項目の下に「List」が無い。

面白いアプローチだとおもったのですがバージョン依存か何かでダメなのか、それとも何か根本的な勘違いをしているのか。ちょっとしたパズルとして保留しておきます。

SQL Serverの互換性レベルって何?

自分用メモ。
SQL Serverの話題で、とある関数が互換性レベル130以上で利用可能というのを見て「互換性レベルって何?」となったので検索。どうやら

  • SQL Serverのバージョンごとに互換性レベルという数値が決められている。
  • 各バージョンごとに互換性を保証する互換性レベルの幅が決められている。
  • 古いSQL Serverのバックアップをリストアする際などに、リストア可否やSQL文の動作保証確認をこの互換性レベルで確認する。

というような話のようで。下記ブログが詳しいので詳細はそちらを。

blog.engineer-memo.com
www.spiria.com

SQL Serverは6.0の頃からなんだかんだで使い続けてますが、このあたりは全然知りませんでした。

人間の技能はゲームのパラメーターとは違う

ふと思ったことのメモ。

先日、teratailでプログラミング初心者の方が「柔軟性が無い」というような指摘を受けたという話に対して回答しました。

teratail.com

まぁ柔軟性なんて「柔軟度」というパラメーター値があるわけじゃなし、

  • 持ちうる選択肢の幅(たくさんの経験や訓練からもたらされる)
  • 代替案を即座に出せるかどうか(上記の幅に加え、物事を俯瞰できる余裕、精神的ゆとり)
  • 他の人のやり方が何かに固執しすぎていないか(結果、相対的に自分が柔軟に映ることがある)

等々、いろんな要素によってその場その場で決まる物なので、柔軟性を高めるための何か、なんて方策は無いと思うのですが……。最近、twitterなどでもこういう「自分のパラメーター値を上げたい、強化したい」的な質問を見かけることがあります。まぁ、柔軟性については「とっさの頭の回転」とか「諦め、切り離しの速さ」とかいろいろと別の要素に言い換える事もできるわけで、でもそれにしたって「頭の回転を速くしたい」と言われてどうすればいいかなんて答えは無いわけで。

まとまりが無いことを書いてしまいましたが要するに何が言いたいかっていうと「ゲームやりすぎじゃね?」です。人間というものをコンピューターRPGのキャラクターが持っている数値のように考えてるんじゃ無いかと思う節が多々あり、「私普段ゲームなんてやらない」とか言い放ってる人も案外影響受けたりしてるんじゃないか、と疑ってます。最近。

他にもあれですよあれ、経験値。すっかり定着しましたね経験値。会社の人とかが新人に対して「経験値が上がればできるようになるから」とかアドバイスしてるのを見ると「スライムもっと倒せってことか?」とか思ってしまいます。そこは本来「経験を積めば」が正しい言葉でしょうが、とか思うのですが、おそらく指摘しても意味が分からないとか言われそうなので黙ってます……。

ま、なんというか、こういう風に「何の影響を受けているか自分でも気づかないうちに影響を受けて、その表現や考えに染まる」ってのは格好悪いな、と思うわけで、自分はそうならないように、一歩引いた距離で自分を含めた物事を見られるようにしていきたいと思う所存です。はい。

オチも何もありませんが思ったことのメモ。

最高に気持ちいい!硬いカラダがグーンと柔らかくなる

最高に気持ちいい!硬いカラダがグーンと柔らかくなる

ULTRA Downy (ウルトラダウニー) 柔軟剤 フリー&ジェントル 無香料 1.53L (60回分)

ULTRA Downy (ウルトラダウニー) 柔軟剤 フリー&ジェントル 無香料 1.53L (60回分)