Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10523 / 76734 ←次へ | 前へ→

【71757】Re:単価計算をLoop処理で行うVBAマクロの作成
回答  UO3  - 12/4/6(金) 5:25 -

引用なし
パスワード
   ▼つぐみ さん:

おはようございます

処理の方法は、もっと処理時間を少なくする工夫も含めて、いろいろあります。
コードの書き方そのものも、セルの指定の方法も含めて、様々です。
ここでは、基本的な、できるだけわかりやすいコードにしてみました。
コードにコメントを入れてありますが、わからないことがあったら質問してください。
なお、Val関数についてはヘルプで検索して読んでみてください。例も含めてわかりやすく説明されています。
コードの中で使っている Row.Count は、今動かしているエクセルのバージョンでの最大行数です。
2003なら65536、2007以降なら1048576が入っています。End関数は、シートの最終行のセルから上方向に
空白ではないセルを見つけます。

Sub Sample()
  Dim myRow As Long    '処理する行
  Dim maxRow As Long   'データの最終行
  Dim qty As Long     '数量
  Dim amt As Long     '金額
  Dim prc As Double    '計算結果の単価
  'データの最終行を求める定番コード
  maxRow = Range("A" & Rows.Count).End(xlUp).Row
  '2行目からデータ最終行まで繰り返し処理
  For myRow = 2 To maxRow
    qty = Val(Range("B" & myRow).Value) '念のため、セルが数値以外の場合でも無理矢理数値に変換
    amt = Val(Range("D" & myRow).Value) '念のため、セルが数値以外の場合でも無理矢理数値に変換
    
    If qty <> 0 Then '単価がゼロでないときのみ処理
      prc = amt / qty
      '計算結果をシート関数のROUNDを使って小数点以下2桁までで丸める。
      '丸めについては、つぐみさんの要件で調整してください。
      prc = WorksheetFunction.Round(prc, 2)
      Range("C" & myRow).Value = prc   '計算結果を転記
    Else
      Range("C" & myRow).Value = "計算不能"
    End If
  Next myRow '次の行へ繰り返し
  
  MsgBox "計算が終了しました"
  
      
End Sub
3 hits

【71749】単価計算をLoop処理で行うVBAマクロの作成 つぐみ 12/4/5(木) 21:38 質問
【71750】Re:単価計算をLoop処理で行うVBAマクロの作... つぐみ 12/4/5(木) 21:40 発言
【71757】Re:単価計算をLoop処理で行うVBAマクロの作... UO3 12/4/6(金) 5:25 回答
【71758】Re:単価計算をLoop処理で行うVBAマクロの作... UO3 12/4/6(金) 9:18 発言
【71760】Re:単価計算をLoop処理で行うVBAマクロの作... つぐみ 12/4/6(金) 10:13 質問
【71761】Re:単価計算をLoop処理で行うVBAマクロの作... つぐみ 12/4/6(金) 10:24 質問
【71762】Re:単価計算をLoop処理で行うVBAマクロの作... ちん 12/4/6(金) 10:30 発言
【71764】Re:単価計算をLoop処理で行うVBAマクロの作... UO3 12/4/6(金) 16:42 発言
【71780】Re:単価計算をLoop処理で行うVBAマクロの作... UO3 12/4/7(土) 20:49 発言
【71802】Re:単価計算をLoop処理で行うVBAマクロの作... つぐみ 12/4/9(月) 17:05 お礼

10523 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free