今回はセルの操作に関する設定のうち、コピー・切り取り・値の書き換えに関する内容を紹介します。
セルの値の取得・操作
セルの値を取得・セルの値を操作する方法について紹介します。
セルの値を取得する方法は次のように書きます。
《セルの値を取得する》
【Valueプロパティ使用】
変数 = Cells(行番号,列番号).Value
【Valueプロパティ不使用】
変数 = Cells(行番号,列番号)
上記の違いは、セルの指定の後に”.Value”があるか無いかです。Valueプロパティは省略しても問題ないです。なおこのブログでは、Valueプロパティを省略してコードを書いています。
サンプルコード(セルの値を取得する)
【表の”りんご”の金額を取得し、画面に表示させる】
上記の表から、リンゴの金額を任意の変数(kingaku)へ取得するには、次の手順となります。
1.変数kingakuのデータ型を決定する。
2.変数kingakuへ値を格納する。
3.画面へkingakuを表示させる。
変数”kingaku”は、果物の金額が整数なので整数型を選びます。ただし、浮動小数点数型やVariant型でも格納は数値として格納することは可能です。また、金額を文字列として取得したい場合は文字列型を使用します。
Sub sample()
Dim kingaku As Integer
kingaku = Cells(5,3)
MsgBox(kingaku)
End Sub
処理の内容としては、
1行目では、変数”kingaku”を整数型として宣言
2行目では、変数”kingaku”へリンゴの金額(セル(5行目,3列目)の値)を格納
3行目は、変数”kingaku”へ格納した値を表示させる
となっています。
次に、セルの値を書き換える方法です。次のように書きます。
《セルの値を書き換える》
Cells(行番号,列番号)= 書き換える値
また、書き換える値のデータの種類によって次のようにかき分けます。
【数値の場合】
Cells(行番号,列番号)= 数値 (そのまま数値を記入)
【文字列の場合】
Cells(行番号,列番号)= ”文字列” (文字列を””( ダブルクォーテーション )で囲む)
サンプルコード(セルの値を書き換える)
【「表.1 くだものの種類と金額」において、12行目に「ぶどう」の名前と金額「300」を追加する】
この場合の作業としては、
1.セル(12行目,2列目)に文字列”ぶどう”を記入
2.セル(12行目,3列目)に数値”300”を記入
となります。
この部分のコードの書き方は、次のようになります。
Cells(12,2)="ぶどう" '①セル(12,2)へ”ぶどう”を記入
Cells(12,3)=300 '②セル(12,3)へ"300"を記入
セルの値のコピー・切り取り
セルの値をコピーもしくは切り取る方法です。
《セルのコピー・切り取り》
【コピー】
コピー元.Copy Destination:=コピー先
【切り取り】
切り取り元.Cut Destination :=貼り付け先
セルのコピーと切り取りの違いは、”Copy”か”Cut”の部分だけで他は同じです。
またコピー元(切り取り元)は、指定する範囲によって、次のように書きます。
《セル範囲の指定》
【単独のセル】
Cells(行番号,列番号)
【任意の範囲】
Range(範囲の左上のセル , 範囲の右下のセル)
【行/列】
行の場合:Rows(行番号)
列の場合:Columns(列番号)
貼り付け先も、コピー元(切り取り元)と同様に書きます。
コピー時にDestinationを省略することも可能です。その場合は、クリップボードに保持された状態となるので貼り付けを行う場合は貼り付けの指示が必要です。貼り付けの指示は次の二つです。
《Destination省略時の貼り付け》
【通常の貼り付け】
張り付けるワークシート.Paste 張り付け先のセル
【指定した内容を張り付ける】
張り付け先.PasteSpecial Paste:=貼り付け方法、Operation:=処理方法、Transpose:= True or False
となります。
通常の貼り付け方法について説明します。「張り付けるワークシート」は今使っているシートか、別のシートにするかで書き方が変わります。
1.今のシートに張り付ける: ActiveSheet
2.別のシートに張り付ける: Worksheets(“シート名”)
なお、現在のシートに張り付ける場合でも2のようにシート名を指定して張り付けることも可能です。
指定した内容を張り付ける方法です。
貼り付け方法は、張り付けたい内容に応じて指定します。内容と値は以下の表のとおりです。
張り付け内容 | 値 |
すべて | xlPasteAll(既定) |
罫線を除く全て | xlPasteAllExceptBorders |
列の幅 | xlPasteColumnWidths |
数式 | xlPasteFormulas |
数式と数値の書式 | xlPasteFormulasAndNumberFormats |
コメント | xlPasteComments |
書式 | xlPasteFormats |
入力規則 | xlPasteValidation |
値 | xlPasteValues |
値と数値の書式 | xlPasteValuesAndNumberFormats |
次に処理方法です。処理方法は、下記の中から選択します。
処理 | 値 |
処理なし | xlPasteSpecialOperationNone(既定) |
コピー先のセルの値にたす | xlPasteSpecialOperationAdd |
コピー先のセルの値からひく | xlPasteSpecialOperationSubtract |
コピー先のセルの値に掛ける | xlPasteSpecialOperationMultiply |
コピー先のセルの値から割る | xlPasteSpecialOperationDivide |
最後に、Transposeは、TrueかFalseで指定します。Trueの場合は、行列が入れ替わります。
なお、Paste:、Operatopm、Transposeは省略可能で、省略は表の規定値が適用されます。
セルの挿入・削除
セルの挿入・削除は次のようになります。
【挿入】
任意の範囲.Insert Shit:=ずらす方向
【削除】
任意の範囲.Delete Shit:=ずらす方向
方向は「xlShiftUp」もしくは「xlShiftToLeft」が指定できます。
【 xlShiftUp 】 削除したセルの範囲の下を上に詰める
【 xlShiftToLeft 】削除したセルの範囲の右を左に詰める
行/列の挿入・削除は次のようになります。
【行の挿入】 Rows(行番号).Insert
【行の削除】 Rows(行番号).Delete
【列の挿入】 Columns(行番号).Insert
【列の削除】 Columns(行番号).Delete
コメント
初めまして。
VBAを独学で勉強しています。先日より、写真の貼り付けを自動化するVBAに
取り組んでますが、Pasteメソッドを使用して実行時エラー438 が発生して
しまいました。ネット検索でCut Destinationを使うことにより、エラー対策
ができることが解りました。
検索している中で、こちらの記事を見つけた次第です。内容を拝見させて
頂き、とても良くまとめられていて、わかりやすいことに痛感しました。
ほかにも、ファイル名・パスを取得するなど、参考にさせて頂いております。
ところで、勝手ながらお願いしたいことがあります。
For Each文の記事が掲載されていないので、とても残念です。
もしよろしければ、この記事を掲載して頂けるなら、ありがたいです。
是非ともご検討宜しくお願い致します。
コメントありがとうございます。
返信が遅くなりすみません。
今更ですが、For Each文の記事を掲載いたしました。
参考になれば幸いです。