より大きい場合にシートを開く際にマクロが更新されます。ターゲットシートを新しい「インスタンス」に開いたときに、2016は同じ動作をしますか?それはばかばかしい証拠でなければならない(私はなぜ彼らにそれをするように求めたのか分からない:P)。したがって、シートを開くときにマクロを一度実行する必要があります。ソースシートに119を超えて値が挿入されるたびに、シートが第2のモニタランで開かれた場合、潜在的に非常に大きなシートとmehラップトップのために不必要に実行しないでください。VBA空白の行を削除せずに別のシートにコピーすると、入力値が
私の大学で使用しているシートには、Wordにエクスポートする前に空白の行を消去するための「複雑な」式やマクロは必要ありません。私は2010年にそれを作ったが、来週には2016年にそれをテストすることはできない。
対象シート(J03)にあるマクロ。
Private Sub worksheet_activate()
ソースシート(WTB)。
Private Sub Run_When_Value_Greather_Than_119_Is_Entered_In_Column_G()
Googleは、空白行、コピー、空白行、その他のアクティブ化方法や空白行ではない回答と結果で詰まっています。私はおそらくどちらを探すかわからないでしょう。
完全なコード。
Private Sub worksheet_activate()
Dim Max As Long, MaxD As Long 'Determine the amount of filled rows
Dim wsWtB As Worksheet, wsJ03 As Worksheet
Dim wb As Workbook
Dim i As Integer, j As Integer 'i and j for the row numbers
Application.ScreenUpdating = False 'screenupdating of for max speeds
Set wb = ThisWorkbook
Set wsJ03 = Sheets("J_03")
Set wsWtB = Sheets("WTB")
Max = WorksheetFunction.Max(wsWtB.Range("A3:A1600")) 'Amount of rows with data
Max = Max + 3 'Ignore the headers
MaxD = WorksheetFunction.Max(wsJ03.Range("A3:A1600"))
MaxD = MaxD + 2
j = 9 'The rownumber where the copying needs to start
wsJ03.Range("B9", Cells(MaxD, 5)).ClearContents 'Clear the old values
For i = 3 To Max 'The copying loop has to start after the headers at row 3
If wsWtB.Cells(i, 7).Value > 119 Then 'Do stuff if...
wsJ03.Cells(j, "B").Value = Chr(39) & wsWtB.Cells(i, "B").Value 'At a '
wsJ03.Cells(j, "C").Value = Chr(39) & wsWtB.Cells(i, "C").Value 'at the start
wsJ03.Cells(j, "D").Value = Chr(39) & wsWtB.Cells(i, "D").Value 'so a zero is
wsJ03.Cells(j, "E").Value = Chr(39) & wsWtB.Cells(i, "E").Value 'displayed
j = j + 1 'Set the next row for the target sheet
Else
End If
Next i
Application.ScreenUpdating = True
End Sub
これは私が問題なく動作しているコードの最初の部分です:-)コメントやアドバイスをすることは自由です。
コーエン。
編集; (最後のセルを探す別の方法)
?thisworkbook.sheets("WTB").cells(rows.Count,"A").end(xlup).row
1047 '<- Rownumber of the last cell with a Formula to create/force
successive
numbers
?thisworkbook.sheets("WTB").columns("A").Find(What:="*", LookIn:=xlValues,
SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
5 '<- Rownumber of the last cell with a value. Includes the header
rows
?WorksheetFunction.Max(thisworkbook.sheets("WTB").Range("A3:A1600"))
3 '<- Highest number in A3:A1600 and also the amount units/rows that
need to be copied to "J_03"
私はシート上の「物」の量を私に与えた機能が必要でした。この場合は3ですが、最大1600になる可能性があります。
編集2; (私はあなたが私が取り組んでいるものを見ることができるので、Googleのシート)https://docs.google.com/spreadsheets/d/1I5qLeOS0DWcwncs_ium_J0Vp6b4nzTsiE0ndbKtpsC0/edit?usp=sharing
編集3;明確な範囲の部分にエラーがありました。 wsJ03.Range(「B9」、細胞(MAXD、5)) .ClearContents「クリア古い値
これはうまくいくはずです...特定の問題が発生した場合は、私たちに知らせてください... Maxを計算する方法をMax = wsWtB.Cells(Rows.Count、 "A")。End(xlUp).Row – Xabier
ちょっと、終わり(xlup)は数式のあるセルも見つけます。私はrange.find( "*"とxlvaluesを見つける)を使用することを選択しましたが、ユーザーはこのシートで連続した数字を使用することを強制されました(COUNTA()とMAX(A)がたくさんあります。私が頭痛を与えているG列の120以上を入力するたびに実行されますEDIT;実際に最後の行にランダムな式がありました:P –
編集が遅れています。彼らはうまく動作しませんでした。誰かが彼らにつまずくと便利だと私はそれを試してみましょう: "ws_change()&Intersect(Target、Range())"拡張オフィス; https:// www。 –