ExcelVBAでセルの中身を操作したいとき
CellsやRangeを使用します。
簡単に言うと、1セルだけを使う場合はCellsを
セルの範囲を使う時はRangeを使います。
セルの中身をメッセージボックスで出す例
例えばA1セルに「2024/5/5_みかん」という文字があります。
A1セルの中身をメッセージボックスで出したい時は
MsgBox Cells(1,1)
と記載します。
Cells(行, 列)を指定します。
Rangeを使用すると
MsgBox Range(“A1”)
と記述します。
Range(セルの範囲)を指定します。
結果は下記のと折りです。
セルの範囲を指定してコピーし、貼り付け
A1からA2までのセルを選択、コピーし
C1セルに貼り付けたい時は次のようになります。
Range("A1:A2").Copy
Range("C1").PasteSpecial
Application.CutCopyMode = False
結果は下記のようになります。
RangeでCellsを使用する例
RangeでCellsを使用して記述すると下記のようになります。
Range(Cells(1,1), Cells(2,1)).Copy
Cells(1,3).PasteSpecial
Application.CutCopyMode = False
CopyとApplication.CutCopyMode = False
Copyは、クリップボードに値を入れます。
Application.CutCopyMode = False はクリップボードの中身を消します。
クリップボードの中身を消さないと思わぬ誤作動の原因になるので
Copyを使用したら必ずクリップボードの中身を消してください。
Pasteのいろいろな指定
下記にPasteの指定で比較的よく使用するものを記載しました。
特に赤字はよく使用し、緑字もやや使用します。(個人の感想です)
xlPasteAll 値、枠線、色などすべてを貼り付けます。
xlPasteAllExceptBorders 枠線以外のすべてを貼り付けます。
xlPasteColumnWidths コピーした列の幅を貼り付けます。
xlPasteComments コメントを貼り付けます。
xlPasteFormats 書式を貼り付けます。
xlPasteFormulas 数式を貼り付けます。
xlPasteFormulasAndNumberFormats 数式と数値の書式を貼り付けます。
xlPasteValidation 入力規則を貼り付けます。
xlPasteValues 値を貼り付けます。
xlPasteValuesAndNumberFormats 値と数値の書式を貼り付けます。
Rangeで指定した複数セルの中身はそのままでは出力できない
Rangeで指定した中身はそのままでは使えません。
例を2つあげました。
MsgBox Range("A1:A2") '---エラーになる
Dim wkSt As String
wkSt = Range("A1:A2") '---エラーになる
A1とA2の値を出力したい場合はこのように記述します。
MsgBox Cells(1,1)& Cells(2,1)
Dim wkSt As String
wkSt = Cells(1,1)& Cells(2,1)
結果はこちらになります。