元システムエンジニア主婦のおうちでスキルアップ教室

ExcelやPowerPointの使い方・最近のITスキルこと・子供のプログラミング教育について

【初めてのVBA】04. エクセルVBA セルの値を取得する

独学でVBAを学んでいくなかで、

気づいたことをブログにまとめています。

 

前回、「ネットサーフィンのためのVBA」と題して、

恥ずかしながら初心者らしいプログラムを

掲載させていただきました。

 

今回は少しプログラムの深堀をしていこうと思います。

f:id:pon-san-blog:20200801185719p:plain

はじめてのVBAプログラミング

 

【目次】

 

エクセルVBA セルの値を取得する

やりたいことは

このようなデータを取得するプログラムです。

 

f:id:pon-san-blog:20200802221328p:plain

エクセルデータ

 

前回はこのようにセルの値を取得していました。

Sub ネットサーフィンプログラム()
  MsgBox Range("A1").Value
  MsgBox Range("A2").Value
  MsgBox Range("A3").Value
  MsgBox Range("A4").Value
End Sub

 

今回は、

前回も使用したRangeの使い方と

Cellsの使い方を深堀します。

 

Rangeオブジェクトの使い方

Rangeオブジェクトとは

Represents a cell, a row, a column, a selection of cells containing one or more contiguous blocks of cells, or a 3D range. 

エクセルのひとつの セル、もしくは、複数のセル範囲を示します。

Range("A1")と記載すれば単一のセル(A1)を示し、
Range("A1:A4")と記載すればA1~A4までのセル範囲を示すことができます。

 

セルに文字を記載する方法

Range("A1").value = "TEST"

 

 

f:id:pon-san-blog:20200804223131p:plain

サンプル:Range(”A1”).value ="セル"

 

Rangeオブジェクトを使ったセルの表現方法

代表例 範囲 使用例
Range("A1") セルA1 Range("A1").value = "セル"
Range("A1:B2") セルA1,A2,B1,B2の範囲 Range("C3:D4").value = "範囲"
Range("A:A") A列 Range("B:B").value = "列"
Range("1:1") 1行目 Range("2:2").value = "行"

 

Range("A1").value = "セル"と記述するとセルA1に"セル"という文字が挿入されます。

f:id:pon-san-blog:20200805210614p:plain

Range("A1").value="セル"

Range("C3;D4").value = "範囲"と記述するとセルC3,C4,D3,D4に"範囲"という文字が挿入されます。

f:id:pon-san-blog:20200805210801p:plain

Range("C3:D4").value = "範囲"

Range("B:B").value = "列"と記述するとB列に"列"という文字が挿入されます。

f:id:pon-san-blog:20200805210856p:plain

強風

Range("2:2").value = "行"と記述すると2行目に"行"という文字が挿入されます。

f:id:pon-san-blog:20200805210914p:plain

Range("2:2").value = "行"

Cellsオブジェクトの使い方

Cellsプロパティとは

Returns a Range object that represents the cells in the specified range.

Cellsで指定したセルのRangeオブジェクトです。

 

Cellsオブジェクトを使ったセルの表現方法

例えば、Cells(1,1)と記述すると、セルA1のRangeオブジェクトを示します。

つまり、Range("A1")とCells(1,1)は同じです。

f:id:pon-san-blog:20200805210614p:plain

Cells(1,1).value="セル"

RangeとCellsの使い分け

特徴を示します。

  Range Cells
単一セルの表現
複数セルの表現 不可
インデックス表現 不可  

Rangeの特徴は、複数範囲のセルをまとめて表現することができます。

一方、Cellsは、単一セルではありますが、インデックスを使ってセルを表現することができます。

 

Cellsの有効な使い方

たとえば、A列の1行目から10行目までのセルに1~10の数値を指定したいとき、

このように記述することができます。

Sub test()


 Dim i As Integer

 For i = 1 To 10 then
     Cells(i, 1).Value = i
 Next


End Sub

 

前回プログラムの改良

前回はこのように記述していましたが、

今回の学習を踏まえると改良できそうです。

 

 改良前

Sub ネットサーフィンプログラム()
  MsgBox Range("A1").Value
  MsgBox Range("A2").Value
  MsgBox Range("A3").Value
  MsgBox Range("A4").Value
End Sub

 

 改良後

Sub ネットサーフィンプログラム()


 Dim i As Integer


 For i = 1 To 4
  MsgBox Cells(i, 1).Value
 Next


End Sub


改良後は、for分を使って冗長なプログラムを簡潔に記載することできるので、

改善としては大成功です。

 

 


お題「手作りしました」