VBA

VBA

Excelシート上でクリックしたら「完了」と入力するVBAのサンプルコード ※もちろん〇でも、済でもいいですよ

Excelシート上でクリックしたら「完了」と入力するVBAのサンプルコードを紹介します。仕様以下のような真っ白なシート1枚のExcelを用意します。そしてセルをクリックするごとに、「完了」と出力します。ソースコード以下の手順でコードを記述します。まずプロジェクトエクスプローラのThisWorkbookをダブルクリックします。次に上部のプルダウンメニューから以下を選択します。左のプルダウンメニューから「Workbook」右のプルダウンメニューから「SheetSelectionChange」次に以下のコードを記述します。Option ExplicitPrivate Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) ' もし1文字以上入力されているなら If Target.Count > 0 Then ' セルに「完了」と入力 Target.Value = "完了" End If End Subこれで準備OKです。補足関数の引数の意味は以下の通りです。引数名型意味ShObject新しい選択...
VBA

Excelの全シートのセル結合をまとめて解除するVBAのサンプルコード

Excelの全シートのセル結合をまとめて解除するVBAのサンプルコードを紹介します。仕様以下のようなサンプル実行を想定します。シートが複数あり、それぞれのシートでセル結合されたセルがあります。そして、マクロの実行で全てのシートのセル結合を解除します。例えば以下のようなシートが用意されたブックのイメージです。シート「Sheet1」シート「Sheet2」シート「Sheet3」コピーの手間があったので全部同じような結合にしてしまいました。実用的なイメージとはかけ離れていますが、どのような結合でも問題ありません。ソースコードUnMerge関数を使用することによって、セル結合が解除できます。Worksheet(XXXXXX).UsedRange.UnMergeシートの数だけループし、UnMerge関数で各シートのセル結合を解除します。Option ExplicitSub unMergeAllSheets() Dim SheetNo As Long For SheetNo = 1 To Worksheets.Count 'セル結合解除 Worksheets(SheetNo).UsedRange.U...
VBA

VBAからExcel関数(ワークシート関数)を呼び出すサンプルコード

VBAからExcel関数(ワークシート関数)を呼び出すサンプルコードを紹介します。仕様以下の仕様に沿って、VBAからExcel関数の呼び出しを説明します。VBAのコードからExcelのAverage、Min、Max関数を呼び出します。Excelのvlookup関数を呼び出して、表2の会員情報を検索して表1出力します。ソースコードVBAからExcel関数を実行するには以下の記述を入力します。Application.WorksheetFunction.ワークシート関数よって、上記の仕様を満たすには以下のコードを記述します。Option ExplicitSub calc() '平均年齢 Range("C8").Value = Application.WorksheetFunction.Average(Range("C3:C6")) '最年長 Range("C9").Value = Application.WorksheetFunction.Max(Range("C3:C6")) '最年少 Range("C10").Value = Application.WorksheetFunction.M...
VBA

Excelのセルの幅を一括で自動調整するVBAのサンプルコード(VBAのAutoFitの使用例)

Excelのセルの幅を一括で自動調整するVBAのサンプルコードを紹介します。仕様Excelを使っていると、以下のようなことがあります文字切れで文章が見えなくなる無駄にセルの幅が広くて見た目が悪い。例えば以下のキャプチャはIDや年齢の幅が広すぎますし、名前の幅は狭すぎて何が書いてあるかわかりません。今回のVBAのサンプルコードは、この幅を自動調整するサンプルコードです。手動で直す場合ちなみに手動で修正する場合は、以下の操作を実施します。対象のセルの幅を広げます。書式メニューから「列の幅の自動調整(I)」を選択します。※セルの境目でダブルクリックするともっと早いですね。すると、以下のように幅が調整されます。VBAもこれをプログラムにするだけですね。ソースコードソースコードは以下のとおりです。AutoFitを使用するのがポイントになります。そして実行していることは基本的に手作業でしていたことを、自動化しただけであるというのもポイントです。Option ExplicitSub AutoFitColumns() '最右端の列番号の取得(表が2行目から始まっているため、2行で評価していることに注意...
VBA

VBAによるswap関数(2つの変数の値を交換)のサンプルコード

VBAによるswap関数(2つの変数の値を交換)のサンプルコードを紹介します。SWAP関数とはSWAP関数とは「二つの変数の値を入れ替える」基本的な関数です。ソートアルゴリズムを学ぶ際に、SWAP関数は必ず必要な知識になります。ここではVBAで、2ステップに分けてSWAP関数を作成していきます。二つの変数の値を入れ替えるコードを作成する上記のコードをSWAP関数化する二つの変数の値の入れ替えまずはシンプルに2つの変数の値を入れ替えます。関数化は後で実施します。ソースコードThisWorkbookの下にソースコードを記述しました。swap1.xlsmOption ExplicitSub main() Dim dataA As String Dim dataB As String Dim temp As String dataA = "AAAA" dataB = "BBBB" MsgBox "実行前:" & Chr(13) + Chr(10) & dataA & "," & dataB temp = dataA dataA = dataB dataB = temp MsgBox "実行後:...
VBA

Excelのセルの末尾の余分な改行をまとめて削除するVBAのサンプルコード

Excelのセルの末尾の余分な改行をまとめて削除するVBAのサンプルコードを紹介します。仕様下記のシートのA列のように文末に余分に改行があるとします。※B列に補足を入れていますこれを以下のシートのように、余分な改行を削除するVBAを考えました。文章の途中の改行は残しつつ、文末の改行だけを消すのです。ソースコードソースコードは以下のとおりです。Option ExplicitSub deleteLineBreak() Dim i As Long For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row Dim CellValue As String CellValue = Worksheets("Sheet1").Cells(i, 1).value '文字数回繰り返す Dim j As Long For j = 1 To Len(CellValue) '最後の文字が改行コードの場合 If Right(CellValue, 1) = vbLf Or Right(CellValue, 1) = vbCr Then '最後の文字以外を格納 CellValue...
VBA

郵便番号一覧から住所を求めていくREST APIを使ったVBAのサンプルコード(zipcloud版)

郵便番号一覧から住所を求めていく、REST APIを使ったVBAのサンプルコードを公開してみます。使用するWebAPIExcel単体で住所情報検索はできないので、下記「郵便番号検索API」の力を借ります。サービス名郵便番号検索API運営株式会社アイビスURL概要郵便番号検索APIは、日本郵便が公開している郵便番号データを検索する機能をRESTで提供しています。仕様画面仕様表のA列に住所を求めたい「郵便番号」の一覧を入力しています。表の右に住所出力の実行ボタンが配置されています。実行ボタンを押下すると、B列とC列に「住所」と「住所(カナ)」が出力されます。ソースコードSub ボタン1_Click() Dim objXMLHttp As Object, zipArr Dim yubinNo As String Dim splitLine() As String Dim i As Long i = 2 '行番号 Do While Cells(i, 1).value <> "" '入力値からハイフンの削除 yubinNo = Replace(Worksheets("Sheet1").Cells...
PowerShell

VBAからPowerShellのコマンドを実行するサンプルコード(戻り値を取得しないパターン)

VBAからPowerShellのコマンドを実行するサンプルコードを2パターン作成してみました。この記事ではそのうちの戻り値が不要で取得しないパターンを紹介します。準備事前準備として、VBAからPowerShellコマンドを実行するには以下の設定が必要です。ツールバーから「参照設定」を選択「Windows Script Host Object Model」のライブラリファイルにチェックを入れます。仕様VBAからPowerShellコマンドを呼び出します。テストで実行するPowerShellのコマンドはなんでもよいのですが、ここでは「Rename-Item」にしてみましょう。マクロファイル(xlsm)と同じディレクトリにファイル「File1.txt」を置き、マクロからPowerShell経由でファイル名を変更してみます。マクロを実行したらファイル名が、「File1.txt」から「File2.txt」になります。見出し念のため補足しますが、実現している処理自体はVBAからPowerShellを経由する必要性はありません。マクロからPowerShellを実行する方法をテストするためにやっていま...
PowerShell

VBAからPowerShellのコマンドを実行するサンプルコード(戻り値を取得するパターン)

VBAからPowerShellのコマンドを実行するサンプルコードを2パターン作成してみました。この記事ではそのうちの戻り値を取得するパターンを紹介します。準備事前準備として、VBAからPowerShellコマンドを実行するには以下の設定が必要です。ツールバーから「参照設定」を選択「Windows Script Host Object Model」のライブラリファイルにチェックを入れます。仕様VBAからPowerShellコマンドを呼び出します。PowerShellのコマンドはなんでもよいのですが、「Get-Date」にして結果をVBAのMsgBox関数で表示してみます。見出し念のため補足しますが、実現している処理自体はVBAからPowerShellを経由する必要性はありません。マクロからPowerShellを実行する方法をテストするためにやっています。ソースコードWScript.ShellのExecメソッドにより、powershellのコマンドを実行しています。execPowerShell.xlsmOption ExplicitFunction execPowerShell(psCmd...
VBA

Excelの各シートの先頭に連番を振るVBAのサンプルコード

シート名の先頭に連番を振るVBAのサンプルコードを紹介します。仕様Excelファイルの各シートの先頭に連番を振ります。以下のようなサンプルファイルを用意してテストします。うまくいけば以下のようにシート名が変わります。実行前のシート名ABCD実行後のシート名01_A02_B03_C04_Dソースコードシート上にはボタン等は置きません。Visual Basic Editorを開き、ThisWorkbook上にそのまま、下記のaddSheetNumber()関数を配置しました。ソースコードOption Explicit Sub addSheetNumber() Dim i As Long For i = 1 To ThisWorkbook.Worksheets.Count Dim newSheetName As String newSheetName = Format(i, "00") & "_" & Worksheets(i).Name Worksheets(i).Name = newSheetName Next End Sub実行では上記のVBAを実行します。実行手順「開発」メニューから...