0

私は自分に非常に近い質問を見つけましたが、答えがその質問に固有のものであったため、それを自分のものと完全に関連付けることができませんでした.

if not 関数を使用して、既に値が含まれている列にデータを入力しています。条件が存在する場合は値を上書きし、条件が存在しない場合は値をそのままにしておきます。

言い換えれば、関数の「else」部分にスキップまたはそのようなことを言ってもらいたいのです...「null」「skip」と他のいくつかを試しましたが、うまくいきませんでした。

以下は、コードの問題を無視する必要がある場合のコードの一部です。これは完成品ではなく、いくつかの変数が必要な場合の基本的な考え方です。前もって感謝します!:

Sub ReportCompareAlta() ' ' ReportCompareAlta Macro ' 列 D が「ALTA」であるインスタンスを追加します

Dim varSheetA As Variant
Dim varSheetB As Variant
Dim varSheetC As Variant
Dim StrValue As Variant
Dim strRangeToCheck As String
Dim iRow As Long
Dim iCol As Long
Dim WbkA As Workbook
Dim WbkB As Workbook
Dim WbkC As Workbook
Dim counter As Long

Set WbkA = Workbooks.Open(Filename:="G:\Reporting\AH_MISSE_FEB2013.xls")
Set WbkB = Workbooks.Open(Filename:="G:\Reporting\AH_MISSE_MAR2013.xls")
Set WbkC = Workbooks.Open(Filename:="G:\Reporting\ReportCompare.xls")
Set varSheetA = WbkA.Worksheets("LocalesMallContratos")
Set varSheetB = WbkB.Worksheets("LocalesMallContratos")
Set varSheetC = WbkC.Worksheets("Sheet1")


strRangeToCheck = "A1:IV65536"

Debug.Print Now
varSheetA = WbkC.Worksheets("Sheet2").Range(strRangeToCheck) 'may be confusing code here
varSheetB = WbkC.Worksheets("Sheet3").Range(strRangeToCheck) 'may be confusing code here
Debug.Print Now

counter = 0

For iRow = LBound(varSheetA, 1) To UBound(varSheetA, 1)        
        If varSheetB(iRow, "B") = varSheetA(iRow, "B") & varSheetB(iRow, "B") <> "GERENCIA" & varSheetB(iRow, "B").Value <> "" & varSheetB(iRow, "D") = "ALTA" Then
            StrValue = ""
            varSheetB.Range("iRow:B").Select 
            Selection = StrValue
            ActiveSheet = varSheetC
            Range("A1").Select
            Selection.Offset(counter, 0).Value = StrValue
            counter = counter - 1

        Else
            "SKIP"
        End If         
Next iRow

サブ終了

4

2 に答える 2

2

Else を削除するだけです。

    If varSheetB(iRow, "B") = varSheetA(iRow, "B") & varSheetB(iRow, "B") <> "GERENCIA" & varSheetB(iRow, "B").Value <> "" & varSheetB(iRow, "D") = "ALTA" Then
        StrValue = ""
        varSheetB.Range("iRow:B").Select 
        Selection = StrValue
        ActiveSheet = varSheetC
        Range("A1").Select
        Selection.Offset(counter, 0).Value = StrValue
        counter = counter - 1

    End If     
于 2013-05-02T20:21:02.513 に答える
1

前述のように、Else の部分は省略できます。

「スキップ」を実際に見たい場合は、次のようにします。

Else
   Debug.Print "SKIP"
End If

これにより、イミディエイト ウィンドウに「スキップ」と表示されます ( Ctrl + G)

于 2013-05-02T21:08:27.517 に答える