Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1544to1548
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Code verbessern/lesbarer machen

Code verbessern/lesbarer machen
03.03.2017 10:14:10
Max2
Hallo Leute,
der Code der unten folgt überprüft eine Eingabe in Spalte F und sucht in einem entsprechenden Tabellenblatt dann nach dem Eingegebenen Begriff.
Anschließend werden die Daten rechts neben dem Treffer in das Vorlagen Blatt eingefügt.
Ich mache das ganze über Worksheet_Change mit einigen If-Bedingungen.
Mein Worksheet_Change Code gefällt mir aber ganz und gar nicht...
Habt ihr Vorschläge für mich?

Worksheet_Change Sub:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim name As String
Dim x As Variant
Dim i
Dim check As Variant
x = Array(1, 1, 3)
check = Array("H", "P", "EUH")
On Error Resume Next
'//Name des aktive Sheets
name = ActiveSheet.name
'//Falls Zelle in Spalte F dann
If Target.Column = 6 Then
'//Falls Target im Bereich xy dann
If Target.Row >= 47 And Target.Row  "" Then
For i = 0 To 2
'//Prüfe ob Target ein Datensatz ist
If Left(Target.Value, x(i)) = check(i) Then
Call verkleinern_feld(Target.Row, Target.Column)
End If
Next i
Else
End If
End If
'//Falls Zelle zwischen Zeile 13 u. 56 dann
If Target.Row > 12 And Target.Row 

Sub der Daten holt (gibt es drei mal, sieht aber immer 99% gleich aus):
Option Explicit
Sub H(ByRef intR As Integer, _
ByRef intC As Integer, _
ByRef name As String, _
ByRef wsN As String)
Dim ws As Worksheet
Dim ws_2 As Worksheet
Dim rng As Range
Dim x As Integer, y As Integer
Dim datenSatz As String
Dim sname As String
Dim i As Integer
Dim lzeile As Long
Application.ScreenUpdating = False
'//Tabellen aus denen Wir Daten holen bzw. einfügen
Set ws = ThisWorkbook.Sheets(wsN)
Set ws_2 = ThisWorkbook.Sheets("H")
'//Datenbank Tabelle
With ws_2
'//Name des gesuchten Datensatzes
sname = name
lzeile = .Cells(.Rows.Count, 2).End(xlUp).Row
'//Range setzen und anschließend durchsuchen
'//in i wird lediglich die Zeile gespeichert
Set rng = .Range(.Cells(2, 2), .Cells(lzeile, 2))
i = rng.Find(What:=sname, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, _
SearchDirection:=xlNext).Row
'//Jetzt holen wir uns den Datensatz neben dem Treffer
datenSatz = .Cells(i, 3).Value
End With
With ws
x = intR
y = intC
.Cells(x, y + 4).Value = datenSatz
End With
Application.ScreenUpdating = True
End Sub

Sub der Zellen verbindet:
Option Explicit
Sub verkleinern_feld(ByRef x As Integer, _
ByRef y As Integer)
Dim ws As Worksheet
Dim rng As Range
Dim i
Application.ScreenUpdating = False
i = 56 - x
Set ws = ThisWorkbook.Sheets("Vorlage_Vorne")
With ws
Set rng = .Range(.Cells(x + 1, y), .Cells(x + 1, y + 20))
rng.MergeCells = False
Set rng = .Range(.Cells(x + 1, y), .Cells(x + 1, y + 3))
rng.MergeCells = True
Set rng = .Range(.Cells(x + 1, y + 4), .Cells(x + 1, y + 20))
rng.MergeCells = True
Set rng = .Range(.Cells(x + 2, y), .Cells(x + i, y + 20))
rng.MergeCells = True
End With
Application.ScreenUpdating = True
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code verbessern/lesbarer machen
03.03.2017 10:17:59
Herbert
Hallo,
eine Beispieldatei wäre sicher hilfreich!
Servus
Hier Mappe
03.03.2017 10:41:21
Max2
Die Zellen in die die Daten kommen sind blau hinterlegt.
Einfach mal Sachen wie: P201, H304 eintippen und auf Enter drücken.
Hier Mappe
https://www.herber.de/bbs/user/111926.xlsm
Danke Herbert
08.03.2017 13:35:42
Max2
Danke für deine Hilfe, so ist das ganze wesentlich schöner und übersichtlicher!
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige