したがって、毎週、請求書のためにスプレッドシートを送付するベンダーがいます。名前の列では、 "BCRプラザ"と同じ場合は、私は自動的にその下に別の行を追加するには、前の行からいくつかのデータをコピーし、元の行の合計を2で割るに優れていると思います。私はすでにこれの。私が把握できないのは、上記のすべてのアクションが実行された後で元の合計に戻ってそれをさらに分割して結果に置き換えることを教える方法です。請求書用のExcelマクロ
これは私が現在、今持っているマクロです。これを試してみてください
Sub BlankLine()
Dim Rng As Range
Dim WorkRng As Range
Dim Name As String
Dim Memo As String
Dim dn As Variant
Dim dt As Variant
Dim Total As Variant
On Error Resume Next
xTitleId = "Add New Row"
Set WorkRng = Application.Selection
Set WorkRng = Cells.Select
Set WorkRng = WorkRng.Columns(1)
xLastRow = WorkRng.Rows.Count
Application.ScreenUpdating = False
For xRowIndex = xLastRow To 1 Step -1
Set Rng = WorkRng.Range("A" & xRowIndex)
If Rng.Value = "BCR Plaza" Then
dt = Range("B" & xRowIndex).Value
dn = Range("D" & xRowIndex).Value + 0.5
Memo = Range("C" & xRowIndex).Value
Total = (Range("I" & xRowIndex).Value)/2
Rng.Offset(1, 0).EntireRow.Insert Shift:=xlDown
Range("A" & xRowIndex + 1) = "Billing"
Range("D" & xRowIndex + 1) = dn
Range("B" & xRowIndex + 1) = dt
Range("C" & xRowIndex + 1) = Memo
Range("I" & xRowIndex + 1) = Total
End If
Next
Application.ScreenUpdating = True
End Sub
'On Error Resume Next'?どうして?これにより、コードをデバッグするのがほとんど不可能になります(もしあなたがそれを使っているのであれば、 'Err.Number'と' On Error GoTo 0'との照合なしで)。そういった使い方は、ほとんどの場合、悪い考えです。 –
私は次の時間に私がcoda vbaを念頭に置いておくつもりです。それを指摘してくれてありがとう。私はちょうど2週間前にvbaを始めましたので、私は長い道のりがあります。再度、感謝します。 – OneaboveAll
ちょうど2週間のすてきなコード。もう1つのやや似たような発言は、 'Option Explicit'を使う習慣になっています(実際には、VBAエディタのオプションで'変数宣言を必要とする 'を有効にして自動化してください)。これらの提案は、長期的にはデバッグ時間を大幅に節約します。 –