ExcelVBA
結構簡単書き込み SaveSetting "MyMacro", "Main", "Data", "123"読み込み GetSetting("MyMacro", "Main", "Data1") ネタ元 http://officetanaka.net/excel/vba/tips/tips43.htm
0.2をStr()したら".2"となって頭のゼロがなくなった。 0.2をCStr()したら"0.2"だった。なにかミス?他にも以下の特徴があるらしい。 Str()は、符号の1桁分が必ず確保されていて、 数値が正の時の戻り値の頭にはスペース(空白)が入ります。 Cstr()は、プラ…
余りを計算するModは小数点はくれないそうです。10倍 100倍してから使うなど工夫が必要 ネタ元 https://oshiete.goo.ne.jp/qa/3456153.html
Option Explicit Private Type SYSTEMTIME wYear As Integer wMonth As Integer wDayOfWeek As Integer wDay As Integer wHour As Integer wMinute As Integer wSecond As Integer wMilliseconds As Integer End Type Private Declare Sub GetSystemTime Lib…
万事解決というわけではないが おかしい数値になるケースが減る Dim d As Currency ネタ元 https://thom.hateblo.jp/entry/2015/07/04/232318
配列がトラブルことがあるみたい。goto使ってcontinue的な処理作るとなりやすい?はっきりと理由はわからないが、配列初期化する処理する前にgotoする処理移動したら治った。 ネタ元 https://msdn.microsoft.com/ja-jp/vba/language-reference-vba/articles/…
シートの保護しつつ以下は許可する設定 ・ロックされたセル範囲の選択 ・ロックされていないセル範囲の選択 ・セルの書式設定 ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _ , AllowFormattingCells:=True ネタ元 http://of…
UI Automationを使う。これを使うとダウンロード通知バーを操作できたり、UI周りを細かくいじれるっぽい ネタ元 https://www.ka-net.org/blog/?p=7697 https://www.ka-net.org/blog/?p=4628 https://www.ka-net.org/blog/?p=4617
Sub 現在より一定時間後にマクロを実行する() 指定時刻 = Now + TimeValue("HH:MM:SS") '現在時刻より何分後 ※2 待ち時間 = TimeValue("HH:MM:SS") '指定時刻に他プロシージャが実行中の場合の待ち時間 ※2 Application.OnTime TimeValue(指定時刻), _ "一定…
Sub QuitSamp1() Dim wb As Workbook For Each wb In Workbooks '開いている全てのブックに対して If wb.Saved = False Then wb.Save '保存されていないブックは上書き保存 Next wb Application.Quit 'Excelを終了します End Subネタ元 https://www.moug.net…
デスクトップの取得方法 Sub Sample3() Dim Path As String, WSH As Variant Set WSH = CreateObject("WScript.Shell") Path = WSH.SpecialFolders("Desktop") & "\" ActiveWorkbook.SaveAs Path & "Sample1.xls" Set WSH = Nothing End Subマイドキュメント…
バイナリでファイル読み込んで無理やりテキスト変換&比較する技 Function ReadBmpAsString(file_name As String) As String Dim bmp() As Byte Open file_name For Binary As #1 ReDim bmp(LOF(1)) Get #1, , bmp Close #1 ReadBmpAsString = bmp End Functi…
Dim Rng1 As Range, Rng2 As Range Dim Target As Range Set Rng1 = Range("A1:D5") Set Rng2 = Range("C4:E10") Set Target = Intersect(Rng1, Rng2) MsgBox Target.Addressネタ元 http://www.moug.net/tech/exvba/0050074.html http://officetanaka.net/ex…
Selection.Interior.ColorIndex = xlNoneネタ元 https://www.moug.net/tech/exvba/0110010.html
普通にMsgBoxだと他のウィンドウに隠れちゃったりして不便な時ある。 #If Win64 Then Public Declare PtrSafe Function MessageBox Lib "user32.dll" Alias "MessageBoxA" (ByVal hWnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal u…
文字列→16進法 Private Function StrToHex(ByVal strData As String) As String '文字列→16進法 Dim strChar As String ReDim strHex(1 To Len(strData)) As String ReDim lngNu(1 To Len(strData)) For i = 1 To Len(strData) strChar = Mid$(strData, i, 1…
Dim objShell As Object Dim objWin As Object Set objShell = CreateObject("Shell.Application") For Each objWin In objShell.Windows If TypeName(objWin) = "IWebBrowser2" Then Set objIE = objWin objIE.Quit End If Nextネタ元 http://loveparin.blo…
https://github.com/VBA-tools/VBA-JSON 使い方のサンプル 連想配列 Dictionary と、可変配列 Collection を使って JSONオブジェクトにデータをセットする '--------------------------------- ' リクエストパラメタ生成 '---------------------------------…
'列番号を文字に変換するユーザー定義関数 Function ColNum2Txt(lngColNum As Long) As String On Error GoTo ErrHandler Dim strAddr As String strAddr = Cells(1, lngColNum).address(False, False) ColNum2Txt = Left(strAddr, Len(strAddr) - 1) Exit F…
http://tonari-it.com/vba-ie-login/ http://www.vba-ie.net/library/ http://www.vba-ie.net/function/sleep.html
こんな感じでシート保護を設定(UIのみ)を設定する Option Explicit Private Sub Workbook_Open() ' 一旦、シート保護を解除 ActiveSheet.Unprotect ' シート保護を設定(UIのみ) ActiveSheet.Protect UserInterfaceOnly:=True ActiveWindow.ScrollRow = 1 End…
Intersectメソッドと、ワークシートのChangeイベントを組み合わせることで、特定のセル範囲が変更されたときのみ処理を実行することができます。 Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A1:B5")) Is Nothing The…
Sub 支社別集計() Dim Sheet1, Sheet2 As Worksheet Const COL店舗CD = 1 ' 店舗CDの列 Const COL分類CD = 3 ' 分類CDの列 Const COL売上額 = 10 ' 売上額 Dim MaxRow As Long ' 最終行 Dim key As String ' 検索キー Dim c, r As Long Set dicT = CreateObj…
Sub Sample37() Dim Member() As String MsgBox "要素数を再定義します" ReDim Member(2) Member(1) = "tanaka" Member(2) = "yamada" ReDim Preserve Member(3) Member(3) = "sato" MsgBox "1人目は" & Member(1) End Subネタ元 http://officetanaka.net/ex…
Public Sub sample() Dim intNo As Integer Dim strFileName As String ' テキストを出力するファイルを設定 strFileName = "C:\tmp\sample.txt" ' ファイルの書き込み intNo = FileSystem.FreeFile() ' フリーファイルNoを取得 Open strFileName For Output…
Sub Sample1() Dim tmp As Variant tmp = Split("123,田中,tanaka", ",") MsgBox tmp(0) MsgBox tmp(1) MsgBox tmp(2) End Subネタ元 http://officetanaka.net/excel/vba/tips/tips62.htm
Sub Sample05() Dim FSO As Object, TempName As String Set FSO = CreateObject("Scripting.FileSystemObject") ''新しいブックを挿入します With Workbooks.Add ''作業用ブック名を生成します With FSO TempName = .GetSpecialFolder(2) & "\" & .GetBaseN…
ActiveCell.Offset(2, 0).Activate-->下方向へ2つ移動 ActiveCell.Offset(0, 3).Activate-->右方向へ3つ移動 ActiveCell.Offset(1, 2).Activate-->下へ1右へ2移動 ActiveCell.Offset(-2, -1).Activate-->上へ2左へ1移動 ネタ元 http://www…
Enum FontColor Normal Black White Red Green Yellow Blue End Enumネタ元 https://www.moug.net/tech/exvba/0150119.html
$1,$2みたいな取り方ね。 Sub RegExpSample4() Dim regEx As Object, Matches As Object, Match As Object Set RE = CreateObject("VBScript.RegExp") Dim targetString As String targetString = "kakeru@yabuki @kyogokudo hisao@nanao " With RE .Pattern…