0
特定の条件が満たされている場合、データリストの特定の値を別のワークシートにマップしようとしています。私は過去に配列を使ってこれを行ってきましたが、今はランタイムエラーが発生しており、デバッグできません。マッピングは、この(条件が満たされていると仮定して)ように動作:A、B、列A、B、AKにC、ALのDおよびE.ループと配列を使用してあるワークシートの特定の値を別のワークシートにマッピングする
にAMSub newcontracts()
Dim source As Variant
Dim destination As Variant
Dim j As Integer
Dim x As Integer
Dim LastRow As Long
source = Array("A", "B", "AK", "AL", "AM")
desitnation = Array("a", "b", "c", "d", "e")
LastRow = ThisWorkbook.Sheets(2).Cells(Rows.Count, 1).End(xlUp).Row
LastRow3 = ThisWorkbook.Sheets("New Contracts").Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("New Contracts").Range("A2:i10").ClearContents
With Worksheets(2)
For x = 11312 To LastRow
If (IsEmpty(Cells(x, 39)) = False Or Cells(x, 39) <> 0) And Cells(x, 40) = "no" Then
For j = 0 To 4
.Range(source(j) & x).Copy Sheets("New Contracts").Range(destination(j) & Rows.Count).End(xlUp)(1)
Next j
End If
Next x
End With
End Sub
ありがとう百万!
のために再び...すぐにみんなに感謝をラルフスバージョンを尽くす「*私はランタイムエラーを取得していますし、私はデバッグすることはできません。*」( 1)何のエラー? (2)どこで(どのコード行)? (3) 'ThisWorkbook.Sheets(2).Cells(Rows.Count、1).End(xlUp).Row'では' ThisWorkbook.Sheets(2) 'のように 'Rows.Count'のシートも指定する必要があります。 .Cells(ThisWorkbook.Sheets(2).Rows.Count、1).End(xlUp).Row'これは、この行または同じ問題が発生した次の行で失敗したActiveSheetを想定しています。 **すべての** 'Rows'は特定のシートを指定する必要があります(あなたのコードにはいくつかあります)。 –
(4)[**常に** Integerの代わりに 'Long'を使用する](https://stackoverflow.com/a/26409520/3219613)ExcelにはIntegerよりも多くの行があります! –
また、 'Sheets(2)'は 'Worksheets(2)'と同じシートでも、 'Sheets2'と同じでもないかもしれません。 'Sheets'コレクションには、ワークブックだけでなくチャートも含まれています。だから、どちらを使うべきかを確かめてください。たいていの場合、人々は実際には 'Sheets'を書くと' Worksheets'を使うつもりです。あなたはその違いを知っていることを確認してください!混在して使用すると、例えば、あなたが使用する場合に問題に遭遇します。チャート。 –