2.基本形
ここではセルに書き込んだ内容を読み込んで、
加工して書き込むという例を実際の構文で説明します。
下記の文をモジュールシートに書き込むと実行できます。
[']はコメントです、VBAの中にあっても実行されません。
意図的に途中の値を表示する文を入れておき、
チェックの時にだけ'をはずして使ったりします。
解説の部分には>のマークを入れました。
'>行の頭の方に説明をいれる。
' 重複行にマークするマクロ
' ポイント:セル位置の取り出し、セルの内容の取り出し、セルへの記入
' マクロ記録日 : 1996/4/21 ユーザー名 : かおる
'[注意!]
' 実行前に
' 開始位置を選択しておくこと。
' 重複行が連続して並ぶようにソート(並べ替え)しておく。
'
' 選択されているセルの右側に1列挿入し、
' 前の行と同じデータがセットされている場合、
' その行の横に"*"のマークを記入します。
' この列でソートすると、一番先頭に並びます。
'
Sub 重複行マーク() '>VBAプログラムの呼び出す時の名前です。
'
'
'>変数を整数型に宣言する。他の型の入力をエラーではじくこともできます。
'>整数Integerにすれば、処理のスピードアップ、メモリの節約となる。
'>精度を上げたい時、倍精度。Dim A, B, C As Double
Dim cnt1, colm1, colm2, row1, row2 As Integer
'現在のセルのプロパティ(位置データ)取り出し
'> 選択された開始位置の行と列番号を得ることが出来ます。
colm1 = ActiveCell.Column '列
row1 = ActiveCell.Row '行
'隣の列を指定
colm2 = colm1 + 1
'セル選択
Cells(row1, colm2).Activate
'> 参考:Cells(row1, colm2).Select
'> SelectはActivateと同じ結果が得られる 。
'
' 現在のセルの右側に列を追加する。
Selection.EntireColumn.Insert '列挿入
Selection.ColumnWidth = 3.25 '巾を決める
'初期値の設定、
'>繰り返す場合には必ず先頭で初期値を入れておきます。
'>習慣にしましょう。別のプログラムで引用されたりした時、値が残る時があります。
cnt1 = 0
line000:
'繰り返し
'>例.Do While cnt1<=20 〜 Loop 間でcnt1=21で終了
'>他にもFor〜Next、If〜Goto〜Endifなどで繰り返すことが出来ます。
'>下の場合は空欄が2行あったら終了する。Exit Doで抜け出す。
Do
row2 = row1 + 1 '次の行番号
'データの取り出し
data1 = Cells(row1, colm1).Formula
'>セルに入っているデータがdata1と定義されます。
' ynmsg = msgBox(data1, , "値の表示")
'>実行途中で値を確認したい時に'をはずして使います。
'>メッセージとして出てきます。
On Error GoTo lastline
'>エラーがあった場合など、終了する。値に信頼が高い場合は不要です。
'>最後のほうにlastlineというジャンプする行き先を:をつけて記入しておきます。
'次のデータの取り出し
data2 = Cells(row2, colm1).Formula
' ynmsg = msgBox(data2, , "値の表示")
If (data1 = "" And data2 = "") Then Exit Do
'>空欄が2行あったら終了する。
'>ループ回数を指定していない場合は、必ず抜ける条件を設定します。
'>安全のために100回とか限界値をいれたり、エラーを検出する方法もあります。
'> If (data2 = "EOF") Then Exit Do : 'EOFの文字が出たら終了させる場合
'同じ内容のセルがあったら、その最初の行の右側に"*"を記入する。
If data1 = data2 Then Cells(row2, colm2).Formula = "*": cnt1 = cnt1 + 1
'>Formulaは取り出すだけでなく、書き込みにも使用できます。
'> :コロンは、次の行を続ける場合に使います。
'>一行が長い場合は_アンダーバーで続けます。
row1 = row2 '行送りされているrow2 = row1 + 1
Loop 'Doの終了位置、セットで必要。
' コメントを & でつなぐ時は前後にスペースを付けないとエラーになります。
ynmsg = MsgBox(("重複行が " & cnt1 & "行ありました。"), , "行数の表示")
lastline: 'エラー処理などで終わらせる位置
End Sub '終了
はじめに/1.まずは作ってみよう/2.基本形/3.簡単な検索