2012-05-04 6 views
2

この問題をVBAで実装できるかどうか、またはVBで行う必要があるかどうかはわかりません。 Visual Studioを使用してネット。ExcelでVBAを使用して複数の値を検索する

問題: Excelはその検索機能を持っており、そこに多くの利用可能な値、またはあなたが遠く列A

enter image description here

から、私は何かを持っているしたいという値を見つけなければならない場合、それは苦痛ですこの

enter image description here

のようなもので、私は彼らのヘッダ名で表示したい列を指定することができます。私が望むやり方で列を並べ替え、コピー&ペーストする能力。 Visual BasicのDataGridに似ていますか? 可能ですか? VBAとVB.net(お好きなところをお選びください):)

場所のDataGridViewをVB.NETを使用した

場所もあなたVB.netフォーム上と -

+1

それはVBAとVB.Netの両方で行うことができます。あなたはどれが欲しいですか? –

+0

VBで行うことができる場合。タブ(アドイン)としてのネットhttp://i47.tinypic.com/tsoj.png - それは最高です – NCC

答えて

4

私は両方の方法の下に与えられていますボタン。ボタン

Public Class Form1 
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 
     Dim masterTable As New DataTable 

     Dim cnnStr As String = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=""Excel 12.0 Xml;HDR=NO"";Data Source=""{0}"";" 

     Using da As New OleDb.OleDbDataAdapter("select * from [Sheet1$] Where F1 = 'Test1'", String.Format(cnnStr, "C:\Book1.xlsx")) 
      da.Fill (masterTable) 
     End Using 
     DataGridView1.DataSource = masterTable 
    End Sub 
End Class 

にこのコードを配置し、私は限られたデータを使用しています:)

SNAPSHOT

を行っています。

enter image description here

また、あなたがそれを行う方法を不思議に思っている場合には

enter image description here

EDIT

以下のようにヘッダを表示するために"select * from [Sheet1$] Where F1 = 'Test1'""select F1 as Name,F2 as PN, F3 as [Inventory Loc] from [Sheet1$] Where F1 = 'Test1'"にあなたの文字列を変更することができますVBA

USING VBA

リストボックスとコマンドボタンをフォームに配置し、このコードを使用します。

Option Explicit 

Private Sub CommandButton1_Click() 
    Dim ws As Worksheet, ws1 As Worksheet 
    Dim rng As Range 
    Dim lastRow As Long 
    Dim Ar As Variant 

    Set ws = Sheets("Sheet1") 

    lastRow = ws.Cells.Find(What:="*", After:=ws.Range("A1"), _ 
       Lookat:=xlPart, LookIn:=xlFormulas, _ 
       SearchOrder:=xlByRows, SearchDirection:=xlPrevious, _ 
       MatchCase:=False).Row 

    Set rng = ws.Range("A1:C" & lastRow) 

    Set ws1 = Sheets.Add 

    With rng 
     ws.AutoFilterMode = False 
     .AutoFilter Field:=1, Criteria1:="Test1" 
     .SpecialCells(xlCellTypeVisible).Copy ws1.Range("A1") 
     ws.AutoFilterMode = False 

     lastRow = ws1.Cells.Find(What:="*", After:=ws1.Range("A1"), _ 
        Lookat:=xlPart, LookIn:=xlFormulas, SearchOrder:=xlByRows, _ 
        SearchDirection:=xlPrevious, MatchCase:=False).Row 

     Ar = ws1.Range("A1:C" & lastRow) 

     Application.DisplayAlerts = False 
     ws1.Delete 
     Application.DisplayAlerts = True 
    End With 

    With Me.ListBox1 
     .Clear 
     .ColumnHeads = False 
     .ColumnCount = 3 
     .List = Ar 
     .ColumnWidths = "50;50;50" 
     .TopIndex = 0 
    End With 
End Sub 

SNAPSHOT

enter image description here

MOREフォロー

こんにちはシッダールタ、コードの両方のためにどうもありがとうございました。 VBの場合。ネットそれは素晴らしいです。 ExelのVBAの場合、Ctrl + Cキーを使用してデータをコピーする方法はありますか?複数の行をコピーする方が望ましいですが、単一行は問題ありません。 "Test1"をテキストボックスi49.tinypic.com/2ceq3yfに置き換えることができます。jpg - user1370854 5時間前

はい選択した1つまたは複数の項目をリストボックスからクリッパーボードにコピーすることは可能です。 listobx multiselectを作成するには、デザインモードでリストボックスのプロパティをfmMultiSelectMulti1に設定します。次へコマンドボタンを追加し、このコードを貼り付けます。

このコードは、私が上記のデータを元にしていますので、適切に修正してください。 Copyボタンを押すと、データがクリップボードにコピーされ、CTL Vを使用して必要な場所にデータを貼り付けることができます。たとえば、メモ帳で。

Private Sub CommandButton2_Click() 
    Dim MyData As DataObject 
    Dim i As Long 
    Dim strCopiedText As String 

    Set MyData = New DataObject 

    With Me.ListBox1 
     For i = 1 To .ListCount 
      If .Selected(i - 1) Then 
       strCopiedText = strCopiedText & _ 
           .List(i - 1, 0) & vbTab & _ 
           .List(i - 1, 1) & vbTab & _ 
           .List(i - 1, 2) & vbCrLf 
      End If 
     Next i 

     If Len(strCopiedText) > 0 Then 
      MyData.Clear 
      MyData.SetText strCopiedText 
      MyData.PutInClipboard 
      MsgBox "Data copied to clipboard" 
     End If 
    End With 
End Sub 

enter image description here

+0

こんにちはSiddharth、両方のコードをありがとうございます。 VBの場合。ネットそれは素晴らしいです。 ExelのVBAの場合、Ctrl + Cキーを使用してデータをコピーする方法はありますか?複数の行をコピーする方が望ましいですが、単一行は問題ありません。私は "Test1"をテキストボックスに置き換えることができます。 – NCC

+1

@ user1370854:上記の投稿を更新しました:) –

+0

Siddharth、ありがとうございました – NCC

関連する問題