2011-12-10 8 views
1

VBAは比較的新しいです。
誰もが下に私の問題を解決することができるマクロで私を助けることができる場合、私は感謝される:Excelプロジェクトでマクロを作成するにはどうすればいいですか?

1参照、私は葉の異なる数と列の数が異なる二つの異なるExcelのレポートを生成するWebアプリケーションを持っています)以下。

レポート1
Sheet1のは、頭の4つの列を持っているC11、C12、C13、C14
シート2は、C21、C22、C23

レポート2
シート1は、4つの列がC11向かった向かった3つの列があります、C12、C13、C14(レポート1と同じ)
Sheet2には、C21、C22、C23という3つの列があります(レポート1と同じ)。
Sheet3には、C31、C32、C33、C34、C35、 .. ..

2)私は、私が入るべき二つのレベルのレポートにいくつかの列を削除できるようにしたい、以下を参照:

レベル1:次の使用例は、シート1を検索し、C12を削除し
検索Sheet2のためと 検索シート3、その後、C22を削除し、C32

レベル2削除:シート1を検索し、
、その後、Sheet2のため 検索をC11とC13を削除してから、C21とC22を削除し Sheet3を検索してC33、C34、C35を削除します。

3)まずマクロにレベルを尋ねてから、各シートを検索して上記のように各列を探して削除します。

誰かがこのマクロで私を助けてくれることを願っています。
事前に感謝とハッピークリスマス。

+0

列ヘッダは、常に各シートの最初の行にあるように、マクロつもりです含めた条件に該当する列全体を削除しますか? – dash

+0

VBAはVB6ではありません。間違った質問。 – Bob77

+0

ハイダッシュ! いいえ、彼らは第6列になります。 あなたが私を助けることを願っています。 よろしくお願いします –

答えて

2

次のコードを使用してください。マクロを実行してレベルを選択します。このコードは、

Sub Choose() 
    l = InputBox(Prompt:="Enter the level you want", Title:="Level Selection") 
    If l = 1 Then 
     Call Level1 
    ElseIf l = 2 Then 
     Level2 
    ElseIf l = "" Then 
    Else 
     MsgBox "Incorrect entry.", vbInformation, "Incorrect" 
    End If 
End Sub 

Sub Level1() 
    Application.ScreenUpdating = False 
    On Error Resume Next 
    Blad1.Activate 
    Blad1.Cells.Find(What:="C12", After:=ActiveCell, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate 
    i = ActiveCell.Column 
    Blad1.Columns(i).Delete 

    Blad2.Activate 
    Blad2.Cells.Find(What:="C22", After:=ActiveCell, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate 
    i = ActiveCell.Column 
    Blad2.Columns(i).Delete 

    Blad3.Activate 
    Blad3.Cells.Find(What:="C32", After:=ActiveCell, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate 
    i = ActiveCell.Column 
    Blad3.Columns(i).Delete 
    Blad1.Activate 
    Application.ScreenUpdating = True 
End Sub 


Sub Level2() 
    Application.ScreenUpdating = False 
    On Error Resume Next 
    Blad1.Activate 
    Blad1.Cells.Find(What:="C11", After:=ActiveCell, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate 
    i = ActiveCell.Column 
    Blad1.Columns(i).Delete 
    Blad1.Cells.Find(What:="C13", After:=ActiveCell, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate 
    i = ActiveCell.Column 
    Blad1.Columns(i).Delete 

    Blad2.Activate 
    Blad2.Cells.Find(What:="C21", After:=ActiveCell, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate 
    i = ActiveCell.Column 
    Blad2.Columns(i).Delete 
    Blad2.Cells.Find(What:="C22", After:=ActiveCell, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate 
    i = ActiveCell.Column 
    Blad2.Columns(i).Delete 

    Blad3.Activate 
    Blad3.Cells.Find(What:="C33", After:=ActiveCell, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate 
    i = ActiveCell.Column 
    Blad3.Columns(i).Delete 
    Blad3.Cells.Find(What:="C34", After:=ActiveCell, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate 
    i = ActiveCell.Column 
    Blad3.Columns(i).Delete 
    Blad3.Cells.Find(What:="C35", After:=ActiveCell, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate 
    i = ActiveCell.Column 
    Blad3.Columns(i).Delete 
    Blad1.Activate 
    Application.ScreenUpdating = True 
End Sub 

くださいsee the file

+0

あなたのお手伝いに感謝します。 これでマクロをテストしましたが、レベルを求めましたが、何も起こりません。どうして? よろしくお願いします。 –

+0

プロンプトで、必要なレベルを入力する必要があります。入力ボックスに1または2を入力します。次に[OK]をクリックします。 OKをクリックすると、指定された条件が存在する列が削除されます。 – Ian

+0

Chooseマクロを実行する代わりに、Level1またはLevel2マクロを直接実行できます。 – Ian

関連する問題