2025年11月19日水曜日

vbaでPIVOTテーブルを操作すると、ピボットテーブルレポートの更新が完了するまでお待ちくださいと怒られた。さて、どうする?

 ピボットテーブルの更新がバックグラウンドで、勝手に行われている可能性がある。そこで、ピボットテーブルのプロパティを調べて、バックグラウンドで更新するというオプションにレ点(チェック)があったら、それをを外せば、勝手に更新されなくなるので、「更新が完了するまで待て」とは言われなくなるはずである。どうだろうか?

2025年9月2日火曜日

accessのテーブルの外部リンクを更新するにはリンクマネージャのポップアウト画面で、左下の「リンク先を更新するためのプロンプトを毎回表示する(A)のチェックボックスにチェック印を入れよ。

accessのテーブルの外部リンクを更新するにはリンクマネージャのポップアウト画面で、左下の「リンク先を更新するためのプロンプトを毎回表示する(A)のチェックボックスにチェック印を入れよ。

2025年8月21日木曜日

excel Cm+Bnという式でBn=空白の場合、式がerrorになる。SUM(Cm,Bn)にすればerrorにならず、Cmの値が取得できる。

excel Cm+Bnという式でBn=空白の場合、式がerrorになる。SUM(Cm,Bn)にすればerrorにならず、Cmの値が取得できる。 これを使えば、グラフを作るケースで重宝する。

2025年8月12日火曜日

macOSにはsqliteがデフォルトで入ってる。

macOSにはsqliteがデフォルトで入ってる。

2025年8月10日日曜日

vba debug のノウハウのあれこれ

  • vbaのデバッグ・ウィンドウでの便利なコマンド
    • ?ActiveWorkBook.Name
    • ?ActiveSheet.Name
    • ?Sheets("Sheet_Name").CurrentReagion.address
  • .copyすると、ActiveSheetが切り替わる。
  • wb.closeするとひとつ前のActiveSheetになる。ちゃんと、スタックされている。
  • 今どこシートがアクティブなのかを意識しないと、プログラムが暴走しだす。
  • ちょいちょいDebug.printせよ。
  • 「インデックスが有効な範囲にありません。」が出たら、シート名やブック名などのスペルが間違えている。スペルを確認せよ。
  • 列の削除は、一遍にやる。Columns("A:A,C:C,E:E,F:J").Delete そして、その前にフィルターは外しておけ。フィルターがかかっていると、怪奇現象を誘発する。
  • 不要な列は非表示にしてコピペせよ。
  • menuでの言い方 Excelブック(.xlsx) Excel97-2003ブック(.xls)
  • vlookupでの列コピーは、application.vlookupを使う。参照シートをコピーし、VLOOKUP関数を埋め込むのではなく・・・なんでやろ?
  • 「このブックには更新できないリンクが1つ以上含まれています。」というメッセージを抑止するにはopenする前にUpdateLinks:=Falseを指定する。openをApplication.DisplayAlerts = Falseとpplication.DisplayAlerts = trueで挟んでおくという手もある。

2025年7月24日木曜日

excel怪奇現象シリーズその1:「このブックには、ほかのデータソースへのリンクが含まれています。」でもどこで参照しているのか教えてくれない。

「このブックには、ほかのデータソースへのリンクが含まれています。」 でもどこで参照しているのか教えてくれない。 Cntl+Fキーで、ブック全体を[リンクの編集]ダイアログ ボックスの[リンク元]に書いてある文字列で検索しても該当のセルが出てこない。 先日、この怪奇現象に悩まされた。何時間も悩んでいたら、ふと、思い付いた。そうだこのセルには、リスト(いわゆるドロップダウンリストだ)を定義していたんだと。リストの定義で外部ファイルを参照していたのであった。 リストを定義した行を他のファイルからコピーすると、リスト(いわゆるドロップダウンリストだ)の定義もコピーされてしまい、そのリスト定義が外部ファイルの参照になるのだ。あーやれやれ。

2025年7月23日水曜日

excelは2万行を超えるとVLOOKUPがすべての結果を表示しなくなり、使いものにならなくなる。そうなったら、accessの出番。でもお金がかかるので、フリーのSQLのmysqlとかpostgreSQLかな。

excelのVLOOKUPをacccess,mysql,postgresqlでやるにはSELECT文で、テーブルAにはあるがテーブルBにはないものをwhere B.フィールド名=Nullみたいな条件で抽出してやればよい。