Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10全般 : Excel 2016)
セル内改行と値の計算について
投稿日時: 19/12/03 12:13:15
投稿者: marimo

 セル内改行と値の計算(引き算)を続けて行うと、
セル内改行が行われません。値の計算は行われます。
「'下まで残高金額のクリア」以降を削除し、
セル内改行だけにするときちんと動きます。
なぜセル内改行と値の計算(引き算)を続けて行うことができないのか
教えてください。
Option Explicit
 
    Dim LstRow As Long
    Dim a As Long, i As Long
 
Sub 実績データ加工()
 
    'セル内改行を削除
      Columns(16).Replace _
        What:=vbLf, _
        Replacement:="", _
        LookAt:=xlPart
 
 '最終行数を取得
        LstRow = Cells(Rows.Count, 1).End(xlUp).Row
 
    '下まで残高金額のクリア
 
      For a = 2 To LstRow
            Cells(a, 15).Clear
        Next a
 
    '下まで残高金額の計算
 
      For i = 2 To LstRow
            Cells(i, 15) = Cells(i, 13) - Cells(i, 14)
        Next i
 
End Sub

回答
投稿日時: 19/12/03 13:26:02
投稿者: simple

セル内改行の置換は16列ですよね。
それと引き算との関係がわかりません。
もう少し説明してください。

回答
投稿日時: 19/12/03 13:50:39
投稿者: WinArrow
投稿者のウェブサイトに移動

やろうとしていることが理解できません。
 
セル内改行を削除して問題はないのですか?
例えば
123改行456
という場合、改行を削除すると
123456
となってしまいます。
でも、以下のコードで使用していないので、影響はないか・・・・
 
無駄なコードが多い
クリアも計算結果の格納もループする必要はないと思います。
計算結果を格納するセルは、あらかじめクリアする必要なないと面ますが
 
 

回答
投稿日時: 19/12/03 15:30:27
投稿者: simple

提示されたコードのうち、セル内改行に関係した事と言えば、
16列("P列")のセルにあるセル内改行を""に置換しているわけだが、
それ以外に、そのコードに何を期待しているんですか?
コードの内容を理解できていますか?
 
>なぜセル内改行と値の計算(引き算)を続けて行うことができないのか
>教えてください。
この意味がさっぱりです。
セル内改行をどうしているコードだと思っているのですか?
説明してください。
 
あちこちにマルチポストしていますが、
質問だけして、コメントをする積もりがないとすれば、
大変失礼な態度だと見なされますよ。しっかりして下さい。

回答
投稿日時: 19/12/03 22:17:56
投稿者: WinArrow
投稿者のウェブサイトに移動

無駄なコードについてのアドバイス
 
(1)

引用:

    '下まで残高金額のクリア
  
       For a = 2 To LstRow
             Cells(a, 15).Clear
         Next a

(2)
引用:

     '下まで残高金額の計算
  
       For i = 2 To LstRow
             Cells(i, 15) = Cells(i, 13) - Cells(i, 14)
         Next i

 
(1)は不要
(2)は、↓のようにすれば、ループは遅いより早くなります。
 
   With Range(Cells(2, 15), Cells(LstRow, 15))
        .Formula = "=M2-N2"
        .Value = .Value
    End With

 

トピックに返信