グッズ

VBAで書かれたExcelマクロの例

次の簡単な Excel マクロの例は、VBA を使用して作成されました。 

推定読書時間: 3

配列を使用した VBA の例

次の Sub プロシージャは、空白セルが見つかるまで、アクティブなワークシートの列 A のセルから値を読み取ります。値は配列に格納されます。この簡単な Excel マクロの例は、次の使用法を示しています。

  • 変数の宣言。
  • 動的配列。
  • サイクル Do Until;
  • 現在の Excel ワークシートのセルを参照します。
  • VBA関数 Ubound 組み込み (配列の最大のインデックスを返します)。
' Sub procedure store values in Column A of the active Worksheet
' into an array
Sub GetCellValues()
Dim iRow As Integer            ' stores the current row number
Dim dCellValues() As Double  ' array to store the cell values
iRow = 1
ReDim dCellValues(1 To 10)
' Do Until loop to extract the value of each cell in column A
' of the active Worksheet, as long as the cell is not blank
Do Until IsEmpty(Cells(iRow, 1))
   ' Check that the dCellValues array is big enough
   ' If not, use ReDim to increase the size of the array by 10
   If UBound(dCellValues) < iRow Then
      ReDim Preserve dCellValues(1 To iRow + 9)
   End If
   ' Store the current cell in the CellValues array
   dCellValues(iRow) = Cells(iRow, 1).Value
   iRow = iRow + 1
Loop
End Sub

このプロシージャは、アクティブなワークシートの列 A の値を配列に格納します。次の点に注意してください。

  • サイクル Do Until アクティブなワークシートの列 A の各セルの値を抽出し、空白セルを無視します
  • 条件は「If UBound(dCellValues) < iRow」 dCellValues 配列が情報を保持するのに十分な大きさであることを確認します。そうでない場合は、ReDim を使用して配列のサイズを 10 増やします
  • 最後に教育​​dCellValues(iRow) = Cells(iRow, 1).Value現在のセルをCellValues配列に格納します

数学演算を使用した VBA の例

次の Sub プロシージャは、「Sheet2」という名前のワークシートの列 A から値を読み取り、その値に対して算術演算を実行します。結果の値は、現在アクティブなワークシートの列 A に出力されます。

このマクロは次のことを示しています。

イノベーションニュースレター
イノベーションに関する最も重要なニュースをお見逃しなく。 メールで受け取るにはサインアップしてください。
  • 変数の宣言。
  • Excel オブジェクト (具体的には、Set キーワードの使用と、「Sheets」オブジェクトから「Columns」オブジェクトにアクセスする方法)。
  • サイクル Do Until;
  • 現在の Excel ワークブック内のワークシートとセル範囲にアクセスします。
' Sub procedure to loop through the values in Column A of the Worksheet
' "Sheet2", perform arithmetic operations on each value, and write the
' result into Column A of the current Active Worksheet ("Sheet1")
Sub Transfer_ColA()
Dim i As Integer
Dim Col As Range
Dim dVal As Double
' Set the variable 'Col' to be Column A of Sheet 2
Set Col = Sheets("Sheet2").Columns("A")
i = 1
' Loop through each cell of the column 'Col' until
' a blank cell is encountered
Do Until IsEmpty(Col.Cells(i))
   ' Apply arithmetic operations to the value of the current cell
   dVal = Col.Cells(i).Value * 2 + 1
   ' The command below copies the result into Column A
   ' of the current Active Worksheet - no need to specify
   ' the Worksheet name as it is the active Worksheet.
   Cells(i, 1) = dVal
   i = i + 1
Loop
End Sub

変更日を記録した VBA の例

シートの特定の範囲のセルが更新されたときに起動する簡単な VBA マクロを作成してみましょう。列 B (B4 から B11) の変更を追跡し、列 A に変更の日時を記録するとします。
次のように進めてみましょう。

  • タブで Developer オプション「」をクリックしますVisual Basic」をクリックして VBA エディタを開きます。
  • VBA エディターで、Sheet2 に関連するコード エディターをダブルクリックします。
  • 右(または左)タブから「ワークシート」を選択し、「変更」オプションを選択します。
  • VBA コードを追加します。
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B1:B10")) Is Nothing Then
        Target.Range("A1:A1").Value = Now
    End If
End Sub

マクロを有効にしてワークブックを保存します (たとえば、.xlsm ファイルとして)。


これで、列 B (行 1 から行 10) のセルを更新するたびに、列 A のセルに現在の日付と時刻が自動的に表示されます。

Ercole Palmeri

イノベーションニュースレター
イノベーションに関する最も重要なニュースをお見逃しなく。 メールで受け取るにはサインアップしてください。

最近の記事

Veeam は、保護から対応、回復まで、ランサムウェアに対する最も包括的なサポートを備えています

Coveware by Veeam は、サイバー恐喝インシデント対応サービスを引き続き提供します。 Coveware はフォレンジックと修復機能を提供します…

4月23 2024

グリーン革命とデジタル革命: 予知保全が石油・ガス業界をどのように変革するか

予知保全は、プラント管理に対する革新的かつ積極的なアプローチにより、石油・ガス部門に革命をもたらしています。

4月22 2024

英国の反トラスト規制当局がGenAIをめぐりビッグテックに警鐘を鳴らす

英国CMAは人工知能市場におけるビッグテック企業の行動について警告を発した。そこには…

4月18 2024

カーサ グリーン: イタリアの持続可能な未来のためのエネルギー革命

建物のエネルギー効率を高めるために欧州連合が制定した「グリーンハウス」法令は、立法手続きを次のように終了しました。

4月18 2024

あなたの言語でイノベーションを読む

イノベーションニュースレター
イノベーションに関する最も重要なニュースをお見逃しなく。 メールで受け取るにはサインアップしてください。

Seguici