非常に新しいVBAをExcelし、ユーザーフォームで注文書を作成する練習に取り組んでいます。行機能数学ClearContents - Excel VBA
いくつかの変数に基づいて行をクリアしようとすると問題が発生しました。
私は次のコードと、シートに追加された行をクリアするためのボタンを持っている:
Private Sub RemovePrevious_Click()
'Removes last line of PO
If LineItemTotal > 1 Then
Rows(LineItemTotal + POrowstart - 1).SpecialCells(xlCellTypeConstants).ClearContents
End If
End Sub
LineItemTotalは、新しい行が追加されるにつれて増加シート上の範囲です。これは、ユーザーフォームの最初に公にPOrowstartで宣言されています。
Private LineItemTotal As Integer
Private POrowstart As Integer
次いで、それらを異なるサブに割り当てられています。
LineItemTotal = Range("LineItemTotal")
POrowstart = 10
問題があることremovepreviousサブを実行するためのボタンを使用した場合、数学は合わない。たとえば、LineItemTotalが3の場合は、行12(正しいもの)が削除されますが、行11が削除されます。もう一度押すと(LineItemTotalは2になりますので、11を削除する必要があります) 11を削除しているかのように検出されましたが、すでに誤ってこれをクリアしています。
コードにSpecialCellsがあります。これは、保留したい行に数式があるためです。
ありがとうございます。
私はあなたに、しかし非常に強力な助言を与えることができます:あなたが必要とするもの(選択されたセルの消去など)を行い、記録を停止し、生成されたコードをあなたのVBAにコピーするMACROを記録しますしかし調整)。これが私がVBAで多くのことをする方法を見つける方法です。 – FDavidov
これをデバッグする最も簡単な方法は、vbexplorerのlocalsウィンドウを使用し、コードの各ステップで変数の値が変化するのを見ることです.F8を押して1行を実行します。 [表示]> [地方自治体のウィンドウ]楽しい! – User632716
ありがとう!本当に良いアドバイスは、しかし、まだあなたがまだ助けることができる場合は、問題の根底に達していない?私が宣言し、私のサブ内の変数を設定する場合、コードが動作しますが、私は一般的な宣言で宣言し、別のサブでそれらを設定しないので、変数と範囲とは何かするようですか?そしてtom preston私はこのコードをデバッガでステップすることはできませんが、別のサブプログラムにスキップするだけです!再びありがとう –