ExcelVBA
Excelで、セル範囲の文字列を連結する関数を書いてみました。連結時の区切り文字を指定することが可能です。文字列連結は、Excel標準のCONCATENATE関数でも出来ますが、この場合、連結する対象のセルを1つずつ指定する必要があり、区切り文字を指定すること…
フィルタを外す If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False End Ifフィルタから抽出条件をクリアする If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData End If
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操作クラス ' ' 使用方法 ' ・サンプル ' 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) プロシージャ内では次のように…
VBAからInternetExplorerを操作する主要な方法をまとめてみます。初期処理と終了処理です。初期処理ではIEを起動・表示します。後処理ではIEを閉じます。 Private Sub U_IEInit(ie As Object) Set ie = CreateObject("InternetExplorer.Application") ie.Vis…
' 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出力するマクロを作成しました。出力ファイルは、元のExcelファイルのファイル名に".csv"を付加した名前になります。 Public Sub CSV出力() Dim fname As String Dim lastCell As Range Dim cell As Range Dim filenum As Intege…
' 表読み込みクラス ' ' 指定されたシートに記述されている表を読むクラスです。 ' ' 新規作成: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…