自作VBAコードに問題があります。 makroは次の問題を解決するはずです:私は "cockpitfile"を使用します。2つの異なるExcelファイルから2つのワークシートのelemtsを2つの配列にロードする必要があります。これらの配列の要素は、互いに引き算する必要があります。私はこれらの2つの要素との違いを得たいと思います。例として:ArrayElm1(1,1) - ArrayElm2(1,1)= ArrayElm3(1,1)、ArrayElm1(1,2) - ArrayElm2(1,2)= ArrayElm3(1,2)等2つの多次元配列の減算VBA
最初の視点ではコードが機能しているようですが、計算機で結果をチェックすると要素の違いは間違っています。私のUbound
はArray Aなので、UBound
に問題があるのでしょうか?
私を助けることができますように!
Sub Differenz1()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'Variabledefinition
Dim i As Long 'Index
Dim j As Long 'Index
Dim k As Long 'Index
Dim ArrayA As Variant 'Array
Dim ArrayB As Variant 'Array
Dim ArrayC(71, 25) As Variant 'Array
Dim myFile1 As String 'Workbookname
Dim myFile2 As String 'Workbookname
Dim wb1 As String 'Workbookname
Dim wb2 As String 'Workbookname
Dim WS_Count1 As Integer 'Count Worksheets
Dim WS_Count2 As Integer 'Count Worksheets
Dim arrays1 As String 'Dimension
Dim arrays2 As String 'Dimension
'Change the actual path
ChDrive "O:\"
ChDir "O:..."
myFile1 = Application.GetOpenFilename
Workbooks.Open Filename:=myFile1, ReadOnly:=True, IgnoreReadOnlyRecommended:=True
wb1 = ActiveWorkbook.Name
WS_Count1 = ActiveWorkbook.Worksheets.Count
myFile2 = Application.GetOpenFilename
Workbooks.Open Filename:=myFile2, ReadOnly:=True, IgnoreReadOnlyRecommended:=True
wb2 = ActiveWorkbook.Name
WS_Count2 = ActiveWorkbook.Worksheets.Count
For k = 1 To WS_Count1
ArrayA = Workbooks(wb1).Worksheets(k).Range("F5:Y75").Value
ArrayB = Workbooks(wb2).Worksheets(k).Range("F5:Y75").Value
For i = LBound(ArrayA, 1) To UBound(ArrayA, 1)
For j = LBound(ArrayA, 2) To UBound(ArrayA, 2)
If Not IsError(ArrayA(i, j)) And Not IsError(ArrayB(i, j)) Then ArrayC(i, j) = ArrayA(i, j) - ArrayB(i, j)
Next j
Next i
ThisWorkbook.Worksheets(k + 1).Range("F5:Y75").Value = ArrayC
Next k
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
を改善んこれは、ファイル1のように用紙の同じ数を有していることを検証しますファイル2、それ以外の場合は実行されません。ファイル2にファイル1よりも多くのシートを含めることができますが、それ以下でない場合は、 'If ws1Count = wb2.Worksheets.Count Then'(およびそれに対応する' End If')の条件を削除してください。 –
hello @Paul bica!私の遅い答えに申し訳ありません。今朝あなたの投稿を見て、コードは完璧に動作します!私を助けてくれてありがとうと、さらにsecondeコードと 'wb1.close False'を加えてくれてありがとう – mhmh
arrayCの次元に問題があったと思った... – mhmh