ExcelVBA

VBAで文字列を配列に格納

Dim v v = Split("111,2222,33333", ",") ネタ元 https://vbabeginner.net/vba%E9%96%A2%E6%95%B0%EF%BC%9A%E6%8C%87%E5%AE%9A%E6%96%87%E5%AD%97%E3%81%A7%E5%88%86%E5%89%B2%E3%81%97%E3%81%A6%E9%85%8D%E5%88%97%E3%81%AB%E3%81%99%E3%82%8B%EF%BC%88spli…

VBAで配列のクリア(初期化)

Eraseステートメントがある Erase 配列名 ネタ元 https://uxmilk.jp/50104

VBAで配列を追加していく技

ReDim Preserveしていく。 Sgn()で未初期化か判定できる Dim arr() As String For i = 0 To 4 If Sgn(arr) = 0 Then '初期化されていないので初期化 ReDim Preserve arr(0) Else '初期化されているので要素を追加 ReDim Preserve arr(UBound(arr) + 1) End I…

excelvbaで配列の文字列をMsgBoxで表示する

Join()使えば一発。 Dim arr(1 To 3) As String arr(1) = "東京" arr(2) = "大阪" arr(3) = "名古屋" MsgBox Join(arr) ネタ元 https://www.relief.jp/docs/excel-vba-show-msgbox-array-values.html

excelvbaでアドインの関数呼ぶ方法

Excelシートで開発開いて、ツール>参照 でアドインを参照するように設定あとはアドイン内の関数呼ぶだけ

vbaのフォームのリストでチェックボックス付きにする方法

・[プロパティ] ウィンドウで、[ liststyle ] プロパティを選択します。 ・ドロップダウン矢印をクリックして、使用可能なスタイルの一覧を表示します。 ・一覧から [Option] を選択します。 ListstyleプロパティをOptionに設定すると、複数**** 選択のプロ…

VBAのHTTP通信でWebスクレイピング

「ツール」メニューの「参照設定」のところで Microsoft HTML Object Library Microsoft XML, v6.0 を追加して使ってね Sub HTTP通信() Dim httpReq As XMLHTTP60 Set httpReq = New XMLHTTP60 httpReq.Open " GET", "https://www.eb.pref.okinawa.jp/kassui…

vbaでHTMLDocumentのエラーがでたとき

「ツール」メニューの「参照設定」のところで Microsoft HTML Object Libraryを追加しよう ネタ元 https://oshiete.goo.ne.jp/qa/8929170.html

VBAフォームのリストの全選択ON/OFF

ループして SelectedをTrue/Falseする Private Sub cmd全選択_Click() Dim iintLoop As Integer With Me!lstResult For iintLoop = 0 To .ListCount - 1 .Selected(iintLoop) = True Next iintLoop End With End Sub Private Sub cmd全解除_Click() Dim iint…

VBAの配列のループ

LBound関数…引数に指定した配列の、最も小さい要素番号を返す UBound関数…引数に指定した配列の、最も大きい要素番号を返すこの関数をうまく使う Sub Sample2() Dim tmp As Variant, i As Long tmp = Split("123,田中,tanaka", ",") For i = LBound(tmp) To …

VBAでgetElementsByClassNameが使えないときの対処方法

ターゲットとなる「URL」のページはIEのドキュメントモードがIE8以下だとgetElementsByClassNameは未対応とのこと。getAttribute("className")でクラス名をしらべながら処理するしかない例 .... Dim httpReq As XMLHTTP60 Set httpReq = New XMLHTTP60 httpR…

VBEのコードを簡単にコメント化する

ツールバー>編集にコメントブロックの機能あるけど 面倒なのでツールバーのユーザー設定で使いやすくしましょう。 ネタ元 http://officetanaka.net/excel/vba/tips/tips04.htm

ExcelVBAで三項演算子

代替の関数がある Function IIf(Expression, TruePart, FalsePart) ネタ元 https://vbabeginner.net/vba%E3%81%AE%E4%B8%89%E9%A0%85%E6%BC%94%E7%AE%97%E5%AD%90%EF%BC%88iif%E9%96%A2%E6%95%B0%EF%BC%89/

ExcelVBAで全角を半角に変換するにはStrConv()

Excelの全角->半角変換関数であるASC()はVBAだと指定した文字の文字コード (Shift_JIS) を返す関数なので注意。 StrConv(文字列,vbNarrow); ネタ元 http://officetanaka.net/excel/vba/function/StrConv.htm

ExcelVBAで数値をカンマ付き文字列に変換する

'// カンマ区切り文字列に変換 s = Format(n, "#,###,###") ネタ元 https://vbabeginner.net/vba%E3%81%A7%E6%95%B0%E5%80%A4%E3%82%92%E6%96%87%E5%AD%97%E5%88%97%E3%81%AB%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B/

カンマ付きの数字文字列でも数値化するのはCDbl()

Val()だとカンマがあると思ったような変換にならない。 CDbl()ならOK。 ネタ元 http://hensa40.cutegirl.jp/archives/3300

ExcelVBAで入力機能付きのダイアログ

Dim ans As String str = InputBox(表示文字列, タイトル文字列, デフォルト値) ネタ元 https://www.officepro.jp/excelvba/dialog/index5.html

ExcelVBAでExcel終了

'確認メッセージを表示させない Application.DisplayAlerts = False '保存 ActiveWorkbook.Save 'Excelを終了する Application.Quit ネタ元 https://excel-excel.com/tips/vba_185.html

ExcelVBAでタブオーダーの設定方法

フォームのエディタで メニュー>表示からタブオーダー選ぶだけ ネタ元 https://vba-beginner.com/vba1-8-3774/

ExcelVBAでフォルダ選択ダイアログ

With Application.FileDialog(msoFileDialogFolderPicker) .InitialFileName = "c:\" '初期フォルダ If .Show = True Then MsgBox = .SelectedItems(1) End If End With ネタ元 http://officetanaka.net/excel/vba/tips/tips39.htm http://www.excel.studio-…

vbaでcsvファイル出力

シート1番目の内容をCSVファイルで出力する方法 Sub writeCSV() Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets(1) Dim csvFile As String csvFile = ActiveWorkbook.Path & "\data.csv" Open csvFile For Output As #1 Dim i As Long, j As Long i …

VBAのユーザー定義関数でできないこと

・スプレッドシートでのセルの挿入、削除、または書式の設定。 ・別のセルの値の変更。 ・ブックでのシートの移動、名前の変更、削除、または追加。 ・計算方法や画面表示など、環境オプションの変更。 ・ブックへの名前の追加。 ・プロパティの設定およびほ…

VBAやVBSでテンポラリファイル取得

Dim FSO As Object, TempName As String Set FSO = CreateObject("Scripting.FileSystemObject") With FSO TempName = .GetSpecialFolder(2) & "\" & .GetBaseName(.GetTempName) & ".xlsxx" End With Set FSO = Nothing ネタ元 http://officetanaka.net/exc…

excelvbaでArray()に引数で配列を渡すと2次元配列になる

Dim items() As Variant ... '2次元配列になっちゃうので1次元配列にする t100_array = Array(items) t100_array = t100_array(0)

excel VBAで今日の日付をyyyymmdd形式で取得する

Format(Date, "yyyymmdd") ネタ元 https://www.relief.jp/docs/excel-vba-today-yyyymmdd.html

excelvbaにてVBA-JSONを利用したjsonのパース&読み込み例

こういうデータの場合 { "20191031":[ 1605,1878,1925,1928,2502,2503,2802,2914,3382,3402, 3407,4063,4188,4452,4502,4503,4507,4519,4523,4528, 4543,4568,4578,4661,4901,4911,5020,5108,5401,5713, 5802,6098,6178,6273,6301,6326,6367,6501,6503,6594,…

excel vba でファイルを一気に読み込む

Dim fso As FileSystemObject Set fso = New FileSystemObject ' インスタンス化 Dim f As file Set f = fso.GetFile("c:\hoge.json") ' ファイルを取得 Dim JsonText As String JsonText = f.OpenAsTextStream.ReadAll ネタ元 http://officetanaka.net/exce…

ExcelVBAのフォームのxボタンで閉じなくさせる方法

QueryCloseイベントを捕まえる Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode = 0 Then MsgBox "[×]ボタンでは閉じられません。", 48 Cancel = True End If End Sub ネタ元 http://officetanaka.net/excel/vba/ti…

ExcelVBAにてXMLHTTPRequestで上手くいかない場合はWinHttpRequestを使用しよう

ネタ元 https://www.ka-net.org/blog/?p=4855

ExcelVBAで現在の時間を数値で取得

時間判定用 Dim nowHHMM nowHHMM = CInt(Format(Now(), "hhmm")) ネタ元 https://vbabeginner.net/vba%E3%81%A7%E7%8F%BE%E5%9C%A8%E6%97%A5%E4%BB%98%E3%81%A8%E7%8F%BE%E5%9C%A8%E6%99%82%E5%88%BB%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B%EF%BC%88…