kurukuru-papaのブログ

主に、ソフトウェア開発に関連したメモを書き溜めたいと思います。

ExcelVBA

指定セル範囲の文字列を連結する関数

Excelで、セル範囲の文字列を連結する関数を書いてみました。連結時の区切り文字を指定することが可能です。文字列連結は、Excel標準のCONCATENATE関数でも出来ますが、この場合、連結する対象のセルを1つずつ指定する必要があり、区切り文字を指定すること…

フィルタ操作メモ

フィルタを外す If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False End Ifフィルタから抽出条件をクリアする If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData End If

vlookup関数の拡張

Excelのvlookup関数は非常に便利でよく使用します。 でも時々、検索対象の列が1列目に固定されていることに不満を覚えることがありました。 その不満を解消すべく、vlookup関数の拡張版を作成してみました。 ついでに、検索方法も拡張してみました。 Option …

画面キャプチャする

VBAでは画面キャプチャも出来てしまうんですね。メモしておきます。 Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Public Declare Sub keybd_event Lib "User32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Lo…

InternetExplorerを操作する(クラス化)

昨日記述した「InternetExplorerを操作する」の内容から、InternetExplorer操作クラスを作成してみました。 ' InternetExplorer操作クラス ' ' 使用方法 ' ・サンプル ' Dim ie As New IEClass ' Call ie.navigate ("http://www.google.co.jp") ' Call ie.se…

スリープ

ちょっとExcelでスリープしたくなりましたので、ネット検索しました。次のような実装になるようです。 モジュールの上の方で、次のように記述しておきます。 Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) プロシージャ内では次のように…

InternetExplorerを操作する

VBAからInternetExplorerを操作する主要な方法をまとめてみます。初期処理と終了処理です。初期処理ではIEを起動・表示します。後処理ではIEを閉じます。 Private Sub U_IEInit(ie As Object) Set ie = CreateObject("InternetExplorer.Application") ie.Vis…

MS-DOSコマンドを実行し、結果を取得する

' DOSコマンドを実行する ' 2008/12/22 新規作成 Public Sub U_Exec(cmd As String, resultArr As Variant) Dim wsh Dim exec Dim resultStr ' 前準備 Set wsh = CreateObject("WScript.Shell") Set exec = wsh.exec("%ComSpec% /c " & cmd) ' コマンド実行 …

指定セル範囲の文字列連結関数

指定されたセル範囲の文字列を連結する関数です。 Public Function U_StrCat(セル範囲 As range) As String Dim result As String Dim cell As range result = "" For Each cell In セル範囲 result = result & cell.Value Next U_StrCat = result End Funct…

高速化

VBAが遅いな〜、と感じたときの対処。次のように画面更新と再計算を抑制するとだいぶ早くなります。 ' 画面更新と再計算の抑制 Application.ScreenUpdating = False Application.EnableCalculation = False ' 画面更新と再計算の再開 Application.ScreenUpda…

デバッグ出力

デバッグログをイミディエイトウインドウに出力する方法 Debug.Print "文字列文字列文字列"

CSV出力

アクティブシートの内容をCSV出力するマクロを作成しました。出力ファイルは、元のExcelファイルのファイル名に".csv"を付加した名前になります。 Public Sub CSV出力() Dim fname As String Dim lastCell As Range Dim cell As Range Dim filenum As Intege…

Excelシート上の表形式内容を読み込むためのクラスを作りました

' 表読み込みクラス ' ' 指定されたシートに記述されている表を読むクラスです。 ' ' 新規作成:2008/03/16 Option Explicit Private sheet As Worksheet Private startCell As Range Private dataRange As Range ' コンストラクタ Private Sub Class_Initia…

ハッシュテーブル(連想配列)のクラスを作成しました

VBAには、ハッシュテーブルのようなデータ構造がありません。それでも、ハッシュテーブルがあると便利な事がありますので、ライブラリを自作してみました。処理を簡単にするため、Excelシートを使ってハッシュテーブルを実現しました。ソースは下記のように…

繰り返し制御

繰り返し制御の構文の書き方、すぐに忘れてしまうのでメモします。 For文 For カウンタ = 初期値 To 最終値 [Step 増分] … [Exit For] Next [カウンタ] For Each文 For Each 要素を示す変数 In 配列またはコレクションの名前 … [Exit For] Next [要素を示す…

データと処理のファイル分割(アドイン)

マクロを作り、それを使っていると、マクロを更新したい場合が出てきます。対象ファイルを一人で使っている分には問題ないのですが、複数の人と共有している場合、ファイルを書き換えるタイミングが難しかったりします。こんなとき、マクロ部分を別ファイル…

指定曜日での直近の日付の取得関数

まあ、あまり使うことはないと思いますが、ある基準日から、指定された曜日で、最も近い未来日を取得する関数を作成しました。 ' 指定曜日での直近の日付 ' argDate - 基準日 ' argWeek - 曜日(1:日曜日、…、7:土曜日) ' 2006/11/05 根本 新規作成 Public …

営業日の足し算

営業日を考慮して、指定日から指定日数後の日付を取得する関数を作成しました。 ' 営業日の足し算 ' argDate - 基準日 ' argDay - 足し合わせる日数 ' 2006/11/05 根本 新規作成 Public Function U_BusinessDayAfter(argDate As Date, argDay As Integer) As…

営業日チェック関数

ある日付が、営業日かどうかをチェックする関数を作りました。祝日を指定すれば、それも考慮してチェックを行います。 ' 指定日が営業日であるかチェックする関数 ' 2006/11/05 新規作成 Public Function U_IsBusinessDay(argDate As Date) As Boolean Dim h…

取消線属性の付いた文字列を除去する関数

Excelでは、1つのセルに含まれるテキストに対して、部分的に取消線を引いたり、色を付けることが可能です。この機能を利用して、テキスト内容の変更を履歴管理することがあります。 変更前の文字列に取消線を引き、変更後の文字列を通常文字や赤文字で記述す…

最終行の取得サンプル

VBAマクロにて、アクティブシートの最終行を取得するサンプルを以下に示します。 ただし、行が追加・削除された場合などは誤認識するけど、ファイルを保存して開き直すと正常に戻るそうです。 ' 最終行の取得 ' 誤認識する場合あり Dim endRow As Long endRo…

私のお気に入りの罫線を設定するマクロ

Sub U_SetLineStyle() ' ' 罫線設定Subプロシージャ ' ' 選択済みのセル範囲に対して、罫線を設定します。 ' 外枠を実線、内部を波線にします。 ' 私のお気に入りです。 ' ' 新規作成:2008/03/15 ' Selection.Borders(xlDiagonalDown).LineStyle = xlNone S…