つらつら Excel VBA

私の備忘録です。

CollectionとDictionary

Collectionのキーは大文字小文字関係なし、TestとTESTが同じ扱い。 Dictionaryのキーは完全一致。TestとTESTは別物扱い。 以下、ざっくりとした使い方の違いメモ。 Option Explicit Sub CollectionとDictionary() 'Collection宣言 Dim col As Collection Set…

処理の停止

VBA実行中に処理を停止したい時の案。 停止検知時にメッセージボックスでも出せば、再開or終了とかもできそう。 UserForm作ってコマンドボタン2個、ラベル1個配置して以下を張り付け。 '------------------------------------------------------------------…

BOM有無UTF-8テキストファイルの読み書き

「Option Explicit」マジ大事。適当に書いても動くからVBA厄介デスヨネー。 UTF-8はBOM有で、UTF-8NはBOM無し。 本題。UTF-8はADODBを使って入出力します。FSOもついでに載せときます。 Option Explicit Public Sub テキストファイルUTF8読み込み(strFilePat…

オブジェクト廃棄のメモ

変数の宣言も廃棄も要らぬ書き方メモ。Withで囲まれている間だけ変数が有効。 Dim buf As String With CreateObject("Scripting.FileSystemObject") With .GetFile("テキストファイルパス").OpenAsTextStream buf = .ReadAll .Close End With End With Debug…

ドルマーク付の関数

文字列を返す関数とのこと。たまに見かけます。 Dim s$ なんかこれでString型になる模様。 IntegerとかLongとか他もろもろも、記号で同様の事ができる模様。 利点。Nullが使える! String型でNull判定が必要に!やったー!(怒)

ListViewコントロール

ListViewコントロールはこんな感じ。 通常、ツールボックスには出てません。 こんな感じで出して使う。 テスト作成したプログラム載せときます。 フォームはモードレスで動かす予定。 Private Sub UserForm_Initialize() With ListView1 .View = lvwReport '…

テキスト一括出力タブ区切り

Sub テキストファイルタブ区切り一括出力() Dim buf As String '1行 Dim delimiter As String '区切り文字 Dim row As Range, clm As Range Dim ws As Worksheet Dim outputTxt As String '全データ Dim outputFilePath As String '出力パス Dim fileNo As I…

テキスト出力タブ区切り(簡易)

Sub テキストファイル出力タブ区切り() Sheets(1).Copy '新しいブックが作成される Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:="C:\temp\test.txt", FileFormat:=xlText ActiveWorkbook.Close 'SaveChanges:=False Application.Dis…

テキストファイル読み込みタブ区切り

Sub テキストファイル読み込みタブ区切り() Dim filePath As String Dim buf As String, iRow As Integer Dim i As Integer Dim temp As Variant Dim fileNo As Integer filePath = Application.GetOpenFilename("CSVファイル(*.csv),*.csv,テキストファイル…

AppSheet見た目の設定

見た目を変えられます。 UX>Band>Color theme LightGreen(左)、Dark - Yellow(右)

AppSheetでAndroidのアプリを作る

Androidでエクセルの画面をそのまんま表示できればいいなーと考えていたら、AppSheetでできるではないか!しかもプログラムを使用しないということで興味をそそられ試してみました。 ※AppSheetはグーグルスプレッドシートのアドインです。英語版オンリーです…

AppSheetテーブルのヘッダー表示

テーブル表示時、列のタイトル(ヘッダー)だけ省いて表示される。表示したい! UXのOptionのTABLE VIEWのShow column headersをONに変更でヘッダー表示される! ヘッダーを選択すると並び替えができる模様 Use horizontal scrollingをONにすると画面が横に…

アプリ開発準備(AppSheet)

GoogleスプレッドシートとAppSheetを使用したアプリ開発の下準備メモ PC作業 1.Googleアカウント取得 2.適当にスプレッドシートを作成 3.スプレッドシートの上部メニューからアドインAppSheetをインストール 4.画面右に表示されている「GO」を押す 5.Google…

Union

If rrr Is Nothing Then Set rrr = r Else Set rrr = Union(rrr, r) End If

ファイルの移動と名前変更

Name ファイルパス As 変更後ファイルパス '勿論エラー処理が必要

指定の文字が何個含まれるか数える

Private Function stringCount(strA As String, strB As String) As Integer stringCount = UBound(Split(strA, strB))End Function 'エラー処理が必要

ハイパーリンクを削除して保存を繰り返す

Sub ハイパーリンクを削除して保存する処理() Dim targetWb As Workbook, targetWsh As Worksheet Dim strFolderPath As String strFolderPath = ThisWorkbook.Path & "\指定フォルダ\" '画面の更新を停止して処理を高速化 Application.ScreenUpdating = Fal…

フォーム上でログ表示したい

'formにListBoxを用意して、Moduleに以下を追加 Private Sub LogAdd(s As String) If s = "" Then Exit Sub With UserForm1.LstBox_Log .AddItem s .ListIndex = .ListCount - 1 '最後尾を選択 .Selected(.ListCount - 1) = False '選択解除 End With DoEven…

オートフィルタで重複データを抽出

Sub Macro1() ' 重複データに色をつける条件付き書式 Range("B:B").Select Range("B:B").FormatConditions.Delete Selection.FormatConditions.AddUniqueValues '条件付き書式の追加 Selection.FormatConditions(1).DupeUnique = xlDuplicate '重複 Selectio…

カレントディレクトリの変更とファイル選択ダイアログの表示場所

Private Sub readLineTextFile() Dim fType As String, promptText As String, chDirPath As String Dim fPath As Variant Dim buf As String 'カレントディレクトリを移動 curDirPath = CurDir ChDir ActiveWorkbook.Path fType = "テキストファイル (*.txt…

データ格納クラスを連想配列で使用する

'クラスモジュールKakunouClassを作成 '系統格納用クラスPublic Name As StringPublic Father As StringPublic Mother As String '自分自身を返すPublic Property Get Self() As KakunouClass Set Self = MeEnd Property '============================== Di…

エクセルシートを個別にブック保存する連続処理

'シート1枚目を残してシート名をファイル名としてブック保存する処理 Sub ブック吐き出し() Dim strSaveFileName As String, strSavePath As String strSavePath = ThisWorkbook.Path & "\個別\" '画面の更新を停止して処理を高速化 Application.ScreenUpdat…

ブラウザIEを開いてエクセルにコピペする処理

Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long) '処理待機Sleep用 'IE上で全て選択とコピーを行ない、Excelの新規シートに貼り付けるFunction getHTML(strSheetName As String, strUrl As String) As Boolean getHTML = True Dim objIE As Ob…

ハイパーリンクのURLを取得

strURL = r.Hyperlinks(1).Address

ステータスバーにメッセージ表示

Application.StatusBar = "表示文字" Application.StatusBar = False 'Excelに返す

ハイパーリンク一括削除

ActiveSheet.Hyperlinks.Delete

InstrRev関数

後ろから探して、前から数える

スプレッドシートの日付計算

今日の日付が2018/8/24、 A1に日付 2018/8/20、 =TODAY()-A1の計算結果 Excel 4 スプレッドシート 3 なんやコレ...

日付のスプレッドシート互換

Excelで自動認識された日付はGoogleスプレッドシートで数値表示されてしまう。ユーザー書式で日付を指定すると、スプレッドシートでも日付と認識してくれる。

Interior.ColorとInterior.ColorIndex

Interior.Colorでは背景色未設定が判別できないので、以下のようにする。 If Interior.ColorIndex=xlNone Then 最悪、16777215で比較するとできる