空腹おやじのログと備忘録

VBA(主にExcel)でいろいろな実験的な事とか、Linuxのコマンドとか設定とかについて忘れないように、あれこれと・・・

【VBA】特定の範囲内の任意の整数をインクリメント、デクリメントして次の値を求める

条件 求める式 補足 コード 実行例 テストコード 実行結果 条件 任意の3つの整数において、以下の条件を満たす事(負の値があっても可) 最小値 範囲の最大値をインクリメントした場合、範囲の最小値を返す事。 範囲の最小値をデクリメントした場合、範囲の…

【VBA】ADOを使ったテキストファイル(CSV)の読み込みについて調べてみた。ついでに、Line Input と速度を比べてみた。

タイトルに「比べてみた」と書いてあるけど、ADOでの処理や設定についてがメインだったりするので、結果だけ知りたい場合は、ずっと下の結果へ・・・ 環境 処理の流れ ADO Schema.ini ファイル (テキスト ファイル ドライバー) Schema.ini ファイルとは INI…

【VBA】任意のRangeの先頭1行を除いたRangeを簡単に取得する

Excelでデータを入力していると、1行目にヘッダ行があって、実際のデータは2行目からということはよくあると思います。 VBAで何らかの処理を行っている際に、ヘッダ行を含んだRangeは取得済みだけど、ヘッダ行を除いた部分をRangeとして取得したい場合、今…

【VBA】Excelで、製品の販売価格の更新情報を持つマスタから、いろいろな販売日の価格を取得する

難しく書いたけど、要するに ある製品の販売価格が、不定期に変わっていて、その履歴が残っている。 じゃあ、「任意のタイミングでの販売価格はいくらか?」を取得するというもの。元ネタはこちら https://twitter.com/ia02003812/status/112285709966959820…

【VBA】Excelはアクティブシートが変わると、処理時間が変わる場合があるようだ

いつもの如く、怪しげな事(?)をゴニョゴニョとやっていて、 「あれ、さっきより処理速くね?」となったので・・・ 経緯 結果 コード まとめ(のようなもの) 追記 行削除(2019/5/5) 経緯 ワークシートに50万件ほどのデータがあって、そいつにフィルタ…

【VBA】割り算を使わないで、数値の2進数表示を取得する(負値対応済み)

最初に断っておきますが、この記事は半分ネタです。 あえて、面倒くさいことしてます。 私がやりたかっただけです。基本に則って2進表示を求めたい方は、 ググる WorksheetFunction.Dec2Bin とか、して下さい。但し、10進数の2進数表示した文字列を取得す…

【VBA】For ループの罠(?)

次のコードを実行するとどうなると思いますか? Public Sub foo() Dim i As Long For i = &H7FFFFFFE To &H7FFFFFFF Debug.Print i Next i End Sub もうひとつ Public Sub bar() Dim i As Long i = &H7FFFFFFE Do Debug.Print i i = i + 1 Loop Until i > &H…

VBAのDictionary の Key について実験してみた

VBAのDictionaryのKeyには、数値、文字(数字を含む)、オブジェクト等が使えます。 そんな中で、ちょっと気になったことがあったので、実験してみました。 データ型が異なる同一値の数値を指定してみる 「データ型が異なる別々の値」をKeyとしてDictionary…

VBAの$付きの文字列関数

VBA

VBAの文字列関数には$付きの物がありますが、ネットで見るコードではほとんど見かけません。Microsoftのサイトで関数を検索しても、出てくるのは$なしばかり。何が違うのと言われれば、 VBA の文字列関数の中には 2 種類のバリエーションを持つものがありま…

VBAで、エンディアンの変換をやろうとしたら、やっぱりハマった

Windowsを使っていると、ソケット通信のコーディングでもしない限り、ほとんど意識する事がないであろうビッグエンディアンとリトルエンディアンに関する事です。まず、「エンディアンって何それ美味しいの?」って人は、こちらをどうぞ。 ja.wikipedia.org…

ExcelのAutoFilterの抽出条件には、配列が指定できる・・・でも、ちょっと注意しないといけない事もある

AutoFilterの抽出条件に配列が使用できるとの事で、試してみた際にハマったので・・・こんなデータを用意。 まずは、1件抽出するコード。こんな感じ? Public Sub doAutoFilter() Dim r As Range Set r = ThisWorkbook.Worksheets("Sheet1").Range("A1").Cu…

VBAでFindFirstFile、FindNextFileを使ってファイルリストを取得する

2022/10/20 追記 この記事のコードを FindFirstFileW を使って Unicode 対応した記事がありますので、そちらも ご覧ください。 z1000s.hatenablog.com ことりちゅんさん(id:Kotori-ChunChun)のところで、FileSystemObjectとDirを使って、ファイルパスの一…

Excelのワークシート名取得 ADOでOpenSchema と Workbooks.Open を比べてみた

ADOというとデータベースに使うというイメージが強いような感じがしますが、Excelに対しても使えます。Excelのワークブックを指定して、ワークシート名の一覧取得を、ADOの使用有無で行ってみます。 使用環境 Windows 10 Home Excel 2013 CPU:古い(恥ずか…

VBAで乱数を使って、意味不明(?)な文字列を生成する・・・コケヲチヰヱタトンシ

いろいろな処理をするコードを書いていると、テスト用の文字列データが欲しくなる時があります。 5個とか10個位なら適当にキーボードから入力して作ってもいいのですが、数百とか数万とか、それ以上となるととても手入力では無理なので、どこかから探して…

指定日が、月内で第何度目の何曜日かを求める(VBA)

最近、表題の処理を2件ほど、はてなブログで見かけた。 いずれの処理も、月始めから指定日までループ処理をしていたが、この手の処理は1週間(7日)の周期性があるので、それを利用してループ処理なしで求めてみた。thom.hateblo.jp b004nws862zx.hatenab…

DictionaryのItemに格納したExcelのRangeは更新可能か?

以前の記事でDictionaryのItemに配列を格納して、後から更新しようとして出来なかったが、懲りずに今度はRangeを格納して試してみた。z1000s.hatenablog.com結論から言うと、今回は更新可能でした!!! DictionaryのItemを更新することで、ワークシートの値…

Unionで纏められたRange内のセルにVBAでアクセスする(Excel)

あまり使う事はないような気がするが、複数のセル範囲の集合をひとつのRangeとした時、そのRange内のデータにどうやってアクセスするのか?やってみました。 複数のセル範囲が不連続の場合のアクセス方法を調べることが目的です。Unionで纏める記事はそれな…

Excelワークシートに指定フォルダ(サブフォルダを含む)から画像を読み込んで貼り付けてみた

もうすぐ3月です。 私のいる会社では、月末近くになると年度末の棚卸しがあります。担当の方がデジカメで写真を撮っては、Excelのワークシートに ちまちまと貼り付けてはサイズと位置を調整して・・・面倒くさそうです。(私はその作業に関しては部外者なの…

CUPS-PDFで大量のページを印刷したら、SSDの空き容量が減ってしまった

うちのノートパソコンには、250GBのSSDが載せてあって、 そこにWindows 10とManjaro Linuxをデュアルブートにして使っています。Manjaro Linuxの/は、112GBしか割り当てしていないので空き容量不足になることは当たり前のこととなっています。先日、CUPS-PDF…

VBAのDictionaryに配列を格納して、変更してみる

どうせなので、多次元配列(3次元だけど)にしてみた。 テスト用データ その1 配列を格納してみる Public Sub Dictionaryに配列を追加() Dim dicValues As Dictionary Dim lValues(1, 1, 1) As Long Dim lKey As Long Dim i As Long Dim j As Long Dim k A…

VBAで休日判定処理を使って、Excelワークシートに休日カレンダーを作る

休日判定を作ったので、その応用を2。Excelのワークシートに休日を指定色にしたカレンダーを作成してみる。 (ソースコードへのリンクは下の方に・・・) 更新履歴 2019/6/13 横1列バージョンを追加しました。 仕様みたいなもの 通常(?)の1週間横並び …

VBAで休日判定処理を使って、指定営業日数後の日付を取得する

休日判定処理を作ったので、その応用を。「翌営業日の日付が知りたい」とか、そういった類です。 休日判定クラスモジュールを用意して、それとは別に標準モジュールを用意して、以下のコードを貼り付けます。 あとは、getNthWorkingDayに必要なパラメータを…

VBAによる「祝日判定処理」を「休日判定処理」に拡張してみた

3ヶ月半ほど前の5月28日に、VBAの祝日判定コードを書いたところ思っていた以上にアクセスされているようで、「以外に需要があるものだ」と少々驚いています。(推定で平日30件たらず?ですけど・・・)そこで、図に乗った空腹おやじは、前回の祝日判定…

Manjaro Linux pacmanのミラー(筑波)がエラー403

現在、2018年7月21日 21時過ぎですが 筑波のミラーがまたエラーのようです。 理研のミラーは大丈夫のようです。

マウントできなくなったHDDから、testdiskを使用して、ファイルをサルベージしてみた

USB接続で使用していた4TBのHDDが、突然使用できなくなりました。 マウントできないと・・・ 根本的な原因は不明なのですが、ラベルが書き換わって、openSUSE-Leapとなっていましたし、 中途半端に、ddコマンドが実行されたような感じでしょうか? openSUSE…

ExcelのVBAで使えるDLLを、C++(Visual Studio 2017)で作る。・・・その2

次回予告までしておきながら、他にVBA関係の記事を書いていたこともあり、既に2ケ月以上が過ぎ、 「いつ頃までに、まとめられるかは、不明・・・」の記載通りになってしまった。前回も書きましたけど、64bit版のVBAではどうなるかわかりませんので!!!今…

VBAによる祝日判定および祝日取得(改正東京五輪・パラリンピック特別措置法 対応)

2018年6月13日、参院本会議で可決、成立しました。これに伴って、2020年の祝日が移動するものが出てきたようなので、先日公開した祝日判定処理を更新しました。 また、2020年からは「体育の日」が「スポーツの日」になるそうなので、合わせて対応済みです。…

【VBA / Excel】祝日休日の判定、取得用データを生成し、実際に判定、取得してみる

この記事では、予め用意された祝日テーブルを使用するのではなく、 クラスモジュール内で、祝日テーブルを自前で生成し、Dictionary に格納して判定処理を行っています。 祝日の定義は、クラスモジュール内に、汎用性を考慮した状態でハードコーディングして…

秀丸で、選択行の行頭に文字を挿入するマクロ

先日、人力検索はてなで、 q.hatena.ne.jp に回答して、ベストアンサーを頂いたのですが ベースになった物があって、C++のソースを編集する際に、 行コメントの追加 既存の行を改修してコメント化 するために以前作ったもの(下記)でした。 (今回の件で、…

LINEのバックアップがGoogleドライブに見当たらない?

スマホの機種変更をしようとしていた知人から、 「LINEのバックアップをGoogleドライブに保存したけど、ファイルが見当たらない。このまま移行作業を進めてもいいのか?」 と相談されました。 LINEの設定画面には、バックアップ日時が表示されているし、 再…