Hallo,
ich habe ein problem mit meinem Code. Ich steuer eine Exceltabelle mit vb.net und möchte ca. 500 Werte in zwei weiteren Tabellenblätter vergleichen. ist der wert in beiden Tabellenblätter nicht vorhanden sollte er in vierten Tabellenblatt aufgelistet bzw. nur in einer ComboBox angezeigt werden.
Zur verständnis:
.... hier nur als ComboBox3 anzeige.
Es dauert ca 30 bis 40 Sek. bis das Ergebnis sichtbar ist!! Gibt es nen schnelleren Weg. In VBA dauert die auswertung mit for - next verfahren ca 4 Sek.
siehe...
Danke im vorraus
Tomi
ich habe ein problem mit meinem Code. Ich steuer eine Exceltabelle mit vb.net und möchte ca. 500 Werte in zwei weiteren Tabellenblätter vergleichen. ist der wert in beiden Tabellenblätter nicht vorhanden sollte er in vierten Tabellenblatt aufgelistet bzw. nur in einer ComboBox angezeigt werden.
Zur verständnis:
Quellcode
- Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
- Dim SoR As Excel.Range, CompR As Excel.Range, SorC As Excel.Range, CompC As Excel.Range, CompC2 As Excel.Range, CompSPERR As Excel.Range
- ComboBox3.Visible = True
- ComboBox3.Items.Clear()
- SoR = Master.objXlBlattVERGL.Range("C2:C500")
- CompR = Master.objXlBlattLEITUNG.Range("C4:C500")
- CompSPERR = Master.objXlBlattGESPE.Range("A4:A500")
- For Each SorC In SoR
- CompC = CompR.Find(SorC.Value, , Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlWhole, )
- CompC2 = CompSPERR.Find(SorC.Value, , Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlWhole, )
- If CompC Is Nothing And CompC2 Is Nothing Then ComboBox3.Items.Add(SorC.Text)
- Next
- End Sub
.... hier nur als ComboBox3 anzeige.
Es dauert ca 30 bis 40 Sek. bis das Ergebnis sichtbar ist!! Gibt es nen schnelleren Weg. In VBA dauert die auswertung mit for - next verfahren ca 4 Sek.
siehe...
Quellcode
- Private Sub CommandButton4_Click() 'FreiePorts
- Dim CelA As String
- Dim FiNNd As Range
- Dim FiNNdSPR As Range
- Dim iAnzahl As Integer
- ActiveWindow.WindowState = xlMinimized
- ComboBox1.Visible = True
- For i = 2 To 1000
- CelA = Sheets("PORTVERGLEICH").Cells(i, 3).Value
- Sheets("LEITUNGSWEGE").Visible = True
- Sheets("LEITUNGSWEGE").Select
- Columns(3).Select
- Set FiNNd = Selection.Find(what:=CelA, After:=ActiveCell, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
- Sheets("GESPERRT").Visible = True
- Sheets("GESPERRT").Select
- Columns(1).Select
- Set FiNNdSPR = Selection.Find(what:=CelA, After:=ActiveCell, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
- If FiNNd Is Nothing And FiNNdSPR Is Nothing Then
- Sheets("FreierPlatz").Visible = True
- Sheets("FreierPlatz").Select
- Cells(Cells(Rows.Count, "B").End(xlUp).Row + 1, "B").Value = CelA
- Else
- End If
- Next i
- Sheets("LEITUNGSWEGE").Visible = False
- Sheets("PORTVERGLEICH").Visible = False
- Sheets("GESPERRT").Visible = False
- Sheets("FreierPlatz").Visible = False
- For iAnzahl = 1 To 1000
- With ComboBox1
- If Sheets("FreierPlatz").Cells(iAnzahl, 2) <> "" Then
- .AddItem Sheets("FreierPlatz").Cells(iAnzahl, 2)
- ComboBox1.ListIndex = 0
- End If
- End With
- Next iAnzahl
- ActiveWindow.WindowState = xlMaximized
- End Sub
Danke im vorraus
Tomi