1

問題を解決するために多くの情報源を検索しましたが、成功しませんでした。私は VBA の初心者なので、私のコードは非常に乱雑に見える可能性が高いです。質問をする目的で、シートの情報を最小限に抑えようとします

「データ」と「生の数値」の 2 つのシートがあります。
データには「プロパティ」と「電話番号」という見出しの列が含まれていますが、「プロパティ」のみがデータを含んでいます。
Raw Numbers には同じ列が含まれていますが、これらのプロパティに関連付けられた特定の数の電話番号しか含まれていないため、「Property」値の一部が欠落しています。

データシート:
プロパティ . . . . 番号
1 エイダ ストリート
2 エイダ ストリート
3 エイダ ストリート
4 エイダ ストリート
5 エイダ ストリート
6 エイダ ストリート

RAW NUMBERS シート:
プロパティ . . . . ナンバー
1 エイダ ストリート。. . . 12345678
2 エイダ通り。. . . 12356322
5 エイダ通り。. . . 12551122
6 エイダ通り。. . . 12212112

数値をデータ シートに自動的にインポートするコードがありますが、3 Ada St に達すると、生の数値に 3 Ada St がないため、エラー (400) が返されます。エラーハンドラーを含めましたが、エラーを再度返す前に一度しか機能しません。
これまでの私のコードは次のとおりです。

Sub Button_Click()
Worksheets("Data").Range("B4").Select  'B4 is the Number column in the data sheet
    Do While ActiveCell.Offset(0, -1) <> ""
    On Error GoTo ErrorHandler
                ActiveCell.Value = Application.WorksheetFunction.IfError(WorksheetFunction.VLookup(ActiveCell.Offset(0, -1), ThisWorkbook.Worksheets("Raw Numbers").Range("Numbers"), 2, False), "")

ErrorHandler:
                ActiveCell.Offset(1, 0).Select
   Loop

End Sub

もともとコードではなく関数で動作させていたので、この方法でコードを書きましたが、それは面倒でした。アドレスに番号が付いていない場合はセルを空白にしたいので、IfError関数がそこにあります。これをエラーハンドラーの一部に変換しようとしましたが、エラーが発生しました。

誰か助けてください!!さらに情報が必要な場合は、喜んで提供します。ずっとこのスレ見てます!

4

2 に答える 2

1

コードで数式を使用し、値を後に貼り付けます。

ActiveCell.FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-1],Numbers,2,FALSE),"""")"
ActiveCell.Value = ActiveCell.Value

未テスト...

于 2013-04-22T13:27:02.327 に答える