エクセルVBA

エクセルマクロVBA:セルの操作

エクセルVBAで処理をしているときに、セルに数式を設定・取得する方法です。

数式を設定する場合

Cells(1, 1).Formula = "=SUM(C1,C2)"

数式を取得する場合

Cells(1, 2) = Cells(1, 1).Formula

以下のサンプルコードで試してみてくださいね。

'****************************************
'セルに数式を設定する
'****************************************
Sub Test14()
 'C列に数字を設定
 Cells(1, 3).Value = 10
 Cells(2, 3).Value = 20

 'A列に数式を設定
 Cells(1, 1).Formula = "=SUM(C1,C2)"
 Cells(2, 1).Formula = "=C1*C2"

 'B列に数式を取得
 Cells(1, 2) = Cells(1, 1).Formula
 Cells(2, 2) = Cells(2, 1).Formula
End Sub

※上記の計算式がA1形式ですが、R1C1形式の場合は、FormulaをFormulaR1C1に変更します。

エクセルマクロVBA:セルの操作

エクセルのちょっとしたテクニックを紹介します。

Rnd関数を使用することで、自分が指定した範囲からランダムに数字を抽出することができます。
AとBを整数とした場合、A〜Bの間の整数値をランダムに取得する場合、以下のような構文になります。

構文
Int((B−A+1)*Rnd+A)

次のサンプルを試してみてくださいね。
50から100までの間の数字を、1行目から20行目までにランダムに取得します。

'***************************************
'乱数を取得する
'***************************************
Sub Test16()
  Dim i As Integer
  Randomize
  For i = 1 To 20
    Cells(i, 1).Value = Int((100 - 50 + 1) * Rnd + 50)
  Next i
End Sub

ちなみに、サンプル中のRandomizeステートメントは、乱数発生ルーチンの初期値を設定するステートメントです。

エクセルVBAのおすすめ書籍⇒Excel VBA逆引き大全600の極意


エクセル:セル関連の操作

エクセルのちょっとしたテクニックを紹介します。

複数のセルに同じ文字を入力する場合、セルのコピーをすることが考えられますが、もっと効率の良く、複数のセルに一括入力する方法があります。


(1)文字を入力したいセルを選択します。
(2)セルを選択した状態のまま、文字を入力します。
※このとき文字は変換の確定をし、文字の後ろにカーソルが残っている状態にしておきます。


(3)入力を確定するときに、[Ctrl]+[Enter]を押します。
(4)これで選択したセルにすべて文字が入力されます。


※複数のセルに数式を入力する場合も使えるので、この方法は慣れると、結構便利ですよ。


エクセルマクロVBA:アプリケーション

エクセルのちょっとしたテクニックを紹介します。

処理が実行中なら「実行中・・・」と表示するようにするには、どうしますか?画面のちらつきを抑えるコードを書いている場合、ちょっと長い処理をさせると、処理中なのか、そうでないのかわからなくなるときがありませんか?マクロの処理中に文字列を表示させることが出来ます。

表示する場合のコードは、
Application.StatusBar = "実行中・・・"

表示を解除する場合のコードは、
Application.StatusBar = False


これで実行中ならステータスバーに文字が表示されるのでわかりますね。あと、ステータスバーに文字を表示させるコードを書いたら、必ず解除するコードも書いてくださいね。書かないと処理が終わっても、ステータスバーの文字がそのままになってしまいます。


これを応用して処理の進み具合を把握することが出来ます。そうです。ループ構文に組み込んで使用します。


以下のサンプルコードを試してみてくださいね。

'***************************************
'ステータスバーに進捗状況を表示する
'***************************************
Sub Test13()
  Dim Rw As Long
  Dim Lastrow As Long

  For Rw = 1 To 5000
    Cells(Rw, 1).Value = Rw
    Application.StatusBar = Rw & "件書込み中・・・"
  Next Rw
  Application.StatusBar = False
  MsgBox "書き込み終了、今度は消去します。"
  Lastrow = Cells(Rows.Count, 1).End(xlUp).Row
  For Rw = 1 To Lastrow
    Cells(Rw, 1).Value = ""
    Application.StatusBar = Rw & "件消去中・・・"
  Next Rw
  Application.StatusBar = False
  MsgBox "終了しました"

End Sub

エクセルマクロVBA:アプリケーション

エクセルのちょっとしたテクニックを紹介します。

エクセルマクロを記録して実行すると、同じシート内での処理でも画面がちらついたりしますよね。短い処理なら気にならないかもしれませんが、長い処理になると、気になってしまうのは私だけでしょうか?

画面のちらつきを抑えるコードを紹介します。

Application.ScreenUpdating = False

コードのはじめに書いておいてください。画面の更新をコード終了まで止めるので、画面がちらつかないようになります。また、処理速度を上げる効果もあるので、長い処理のときには、特に効果的です。


エクセル
〜ちょっとしたテクニック〜
Add to Google My Yahoo!に追加 ブックマークに追加する
Author

エステリア

エクセルの基本から小技までちょっとしたテクニックを随時提供中

ご案内
●役に立ったと思った方は●

人気blogランキング

1日1回のクリックでこのブログが育ちます。応援よろしくお願いします。
----------------------------------------------
●運営ポリシー●

エクセルのいろんな機能を随時紹介していきます。
トラバ、コメント大歓迎です。内容を確認の上、掲載します。アダルトサイトからのトラバ、コメントはご遠慮下さい。
楽天市場