私はプログラミング/コーディングが新しく、コードに問題があります。VBA/Excelで無効な外部プロシージャと構文
私は現在、エクセル文書を読み込み、重複した列に部分的に空白の行を挿入するマクロをExcelに書き込もうとしています。
Excelシートが含まれている場合、私は現在、エクセル2010例えばので
を使用しています。このようにデータをソートする
Column A, Column B, Column C, Column D, Column E
1 Apples 1 40 Blue
1 Bananas
1 Oranges
2 Cherries 2 50 Red
3 Kiwis 3 60 Pink
:
はColumn A, Column B, Column C, Column D, Column E
1 Apples 1 40 Blue
1 Bananas 2 50 Red
1 Oranges 3 60 Pink
2 Cherries
3 Kiwis
その後、スクリプトがにそれをソートします列Aの値と列Cの値が等しくない場合は、列AとCとでC、D、Eに空白を作成します。
これまでの私のコード:
Sub Main()
Dim a As Long, c As Long
Dim objRange As Range
Dim strCIDCol1 As String, strCIDCol3 As String
a = 1 'row counter for Column A
c = 1 'row counter for Column C
Do Until ActiveSheet.Cells(a, 1) = ""
'sets the loop to run until A1 is blank
strCIDCol1 = ActiveSheet.Cells(a, 1)
'sets the value of A1 as CIDCol1
strCIDCol3 = ActiveSheet.Cells(c, 3)
'sets the value of C1 as CIDCol3
If (strCIDCol1 <> strCIDCol2) Then
'runs until A(a) and C(c) are not equal
Set objRange = ActiveSheet.Cells(c, 3).Range(Cells(c, 3), Cells(c, 5))
objRange.Activate
'Selects Columns C, D, and E
objRange.Insert (xlShiftDown)
'Inserts "Shift Row Down"
strCIDCol1 = ActiveSheet.Cells(a + 1, 1)
'moves on
End If
a = a + 1 'adds 1 to counter to move to next row
c = c + 1 'adds 1 to counter to move to next row
Loop
End Sub
私はまた、1004エラー「の挿入を取得しています
a = 1
c = 1
と
a = a + 1
c = c + 1
に "無効な外部の手順" エラーを得続けます範囲クラスのメソッドが失敗しました」
objRange.Insert (xlShiftDown)
私はobjRangeで何をしているのか分かりません。私はコードをオンラインで見て、必要なものに合わせてそれを適応しようとしました。説明された方法では、objRangeを使用して、選択された領域の列C、D、およびEを強調表示しました。そしてInsertは、強調表示されたセルの上に行を挿入することによってセルをシフトダウンします。
// VBAではコメントに使用されていません。 //を ' – RADO
@Tonyと置き換えると、 'objExcel'となります。これはあなたのコードの一部であると思われ、エラーはあなたが今私たちに示されていないものによって引き起こされると確信しています。 – Masoud
便利なヒント:ローのカウントに整数を使用しないのは、符号付き16ビット値(最大32767)しか保持できないためです。代わりにLongを使用します。 –