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みたいな条件で抽出してやればよい。

2025年5月6日火曜日

vbaでツールを作る時に役に立つルール

  • menuという名前のシートを作る:ツールが動作するためにパラメタ(入出力のフォルダまたはファイル、デバッグモードで走行するか否かといったオプション等々)を記述したり、マイフォルダやマイファイルの選択ボタンを配置できるようにしておく。
  • マイフォルダボタンを作る:ボタンにはフォルダ選択というキャプションをつけておくと良い。このボタンをクリックすると、入力や出力のフォルダをmenuシート(GUI画面)で設定する形にできる。
  • トレース機能を作る:モジュールの走行状況がわかるようなデバッグ情報を要所要所で採取しておく。エラーが起きた時に何があったのがわかるようにしておく。テキストファイルとして、ツールと同じフォルダに追書きモードで記録していく。トラブルが起きたら、参照し、その時点で不要なら削除する(クリア)。トレースファイルがなければ、新規に作るという構造にしておく。
  • ステータスバーに進行状況を表示する:ステータスバーとは、EXCELの画面左隅の表示エリアである。ここにポイントとなる箇所で、ツールの進行状況を出力せよ。トレース情報を一部、出力するのもよいかもしれない。
    • Application.StatusBar = "表示する文字"
    • Application.StatusBar = False でリセットせよ。アプリ終了前に必ずにね。
  • 処理終了時にmsgboxコマンドで処理終了というメッセージを出力すると良い。さらに、timeコマンドで開始時と終了時の時間差を所要時間として表示するのも良いだろう。

2025年4月25日金曜日

vbaの画面構成がグチャグチャに壊れたのを戻すにはどうしたいいのか

[vba画面]→[ツール]→[オプション]⇨[ドッキング]で、全てのウィンドウにチェックを入れるだけで良い。そして、表示された画面を自分好みの位置にする。

  • イミデェートウィンドウ
  • ローカルウィンドウ
  • ウォッチウィンドウ
  • プロジェクトエクスプローラ
  • プロパティウィンドウ
  • オブジェクトウィンドウ

2025年4月24日木曜日

米、再び姿を消したのか?令和7年は早いなと思っていたら・・

  昨日、近くのスーパー万代に米を買いに行った。棚は空っぽ。買えなかった。今年は去年より米の姿がなくなるのが早かった。幸い、近くのスーパーたこ一で5Kgで6134円(税込)でゲットできたけど、気楽に買えない値段になっていた。近くの阪急オアシスも米の棚は空っぽだった。コスモスにはカルロース米が2つほど積んであった。日本は、関税交渉でトランプ大統領にあるだけ買うよと言えば良いのではと思う。後日、OASISを覗くと、4千円ぐらいの5kgの富山コシヒカリが沢山、あった。あるとこにはある。でも阪急にはなかったな。何が起きているんだろうか?そして、数日経った今日、阪急のお米屋を覗くと、米が並んでいた。米は姿を消していなかった。