2017-04-13 3 views
0

以下のコードは、各列をスキャンし、条件(SEA、CUAなど、赤色)に該当する行全体を"FileShares"VBA:新しいタブの条件に該当するセルをコピーするマクロ

ここでは、行全体をコピーするのではなく、ソースシート(例dataset1を参照)からターゲットシステム(アプリケーション)、ユーザーIDおよびロール名を宛先シートに、条件に一致する各セルの「Fileshares」(例dataset2を参照)を入力します。大胆なヘッダーだけが満たされる必要があります。 「アクション」列の場合、データがある各行に「削除」を配置する必要があります。

また、変数「k」をハードコードする代わりに、n列目(シートの最後の列)まで列を動的に検索したいと考えています。

ご意見、ご提案、ご感想をいただければ幸いです。ありがとう!

Example dataset1Example dataset2

Sub BulkUpload() 
Dim rngCell As Range 
Dim lngLstRow As Long 
Dim keywords() As String, maxKeywords() As String 
Dim totalKeywords As Integer, i& 
Dim ws As Worksheet, resultsWS As Worksheet 



Sheets.Add 
ActiveSheet.Name = "FileShares" 

Call Template 


Set ws = Sheets("Sheet1") 
Set resultsWS = Sheets("FileShares") 


totalKeywords = 8 
ReDim keywords(1 To totalKeywords) 
ReDim maxKeywords(1 To totalKeywords) 

maxKeywords(1) = "SEA" 
maxKeywords(2) = "CUA" 
maxKeywords(3) = "CCA" 
maxKeywords(4) = "CAA" 
maxKeywords(5) = "AdA" 
maxKeywords(6) = "X" 
maxKeywords(7) = "CUA" & Chr(10) & "SEA" 
maxKeywords(8) = "CCA" & Chr(10) & "CUA" & Chr(10) & "SEA" 


lngLstRow = ws.UsedRange.Rows.Count 
Worksheets("FileShares").Select 


j = 6 
p = 1 
q = 6 

Dim k&      ' create a Long to use as Column numbers for the loop 
For k = 9 To 50 
    With ws 
     For Each rngCell In .Range(.Cells(8, k), .Cells(lngLstRow, k)) 

      For i = LBound(maxKeywords) To UBound(maxKeywords) 
       If rngCell.Value = maxKeywords(i) And rngCell.Interior.ColorIndex = 3 Then 
       resultsWS.Cells(1000, k).End(xlUp).Offset(j + p, 0).EntireRow.Value = rngCell.EntireRow.Value 

      j = q + p - 7 'Used to start at row 8 and every row after 
      End If 
     Next i 
    Next rngCell 

End With 
Next k 
End Sub 
+1

私は基本的に@BruceWayneを[あなたのためのコードを書く](http://stackoverflow.com/a/35515223/1153513)しています。新しい機能を自分で実装しようとする試み**で、あなたの側で何らかの努力をしてはいかがですか? – Ralph

+0

はいBruceWayneは去年私を助けるほど親切でした。私はそれに非常に感謝しています!私はいくつかの変更を加えました。私は変更する方法を考え出しました。あなたは、私が望むやり方でオフセットを取得するのにどれくらいの時間がかかったか信じられません。そして私は行全体のコピーを変更しようとしましたが、代わりに、特定のセルは自分自身を変更しようとしましたが、私は何の根拠も作っていません。私はここにしようとしている!ありがとうラルフ。 – Vince

答えて

0

Excelは、あなたのマクロを書くことができます!

macro recorderを使用して、手動でアクションを実行します。レコーダーは、クリックとボタンの押下をVBAに変換します。

一度記録されると、step throughあなたのコード。 VBAのIDEには素晴らしい機能が含まれています。 F8キーを押すと、コードを1行ずつ進めることができます。これは、記録されたマクロの各部分が何をするのかを理解するのに役立ちます。 トップヒント:画面を分割するので、ExcelとVBAの両方のウィンドウが表示されます。 UIの各行に与える影響を見ると、コードを把握するのに役立ちます。

理解できないコード行が見つかったらMicrosoft's documentationを参照してください。ほとんどの項目には、実際の例と説明が含まれています。

あなたはこのテクニックに従って多くを学ぶことができます。しかし、限界があります。手動でアクションを実行できない場合は、そのアクションを記録できません。あなたのスキルを次のレベルに引き上げるために、私は(順番に)お勧めします:

  1. トレーニングコースに参加してください。
  2. bookをお読みください。
  3. blogsを読んでください。

インターネットには豊富な情報が含まれていますが、そのほとんどは一口サイズのチャンクです。コースや書籍では、これらの問題を解決するために必要なツールを提供しながら、基本を詳細にカバーしています。

私が好きな本はWroxで公開されています。しかし、私はあなたが買う前に1ページか2ページをプレビューすることをお勧めします。私は上に乗っていないスタイルで書かれた本を読んで嫌いです。

+0

ありがとうございます宛先データ。そのステップスルーは私を助けてくれるはずです。私は何年も前にプログラミングのクラスを紹介してきましたので、おそらくそれを踏んで、私にとって最も理にかなっています。 – Vince

関連する問題