PDA

Vollständige Version anzeigen : 2 Werte suchen und Bereich aktivieren


saarda
13.07.2015, 08:41
Hallo Forum,

ich habe eine Tabelle in der in Spalte A bestimmte Werte nur einmal pro Zelle auftreten (auch stets in der gleichen Reihenfolge), jedoch kann die Zeilenposition variieren.

Ich möchte gerne das Wert "1" gesucht wird und der Bereich bis Wert "2" von Spalte A - K in ein Word Dokument kopiert wird.

Durch Internetsuche habe ich mein Code zum Teil schon aufbauen können, aber jetzt trete ich auf der Stelle. Leider ist Wert "1" bisher eine feste Zeilennposition und bisher nur Wert "2" variabel.

Es gibt sicherlich eine einfache Lösung, aber ich nutze VBA nur sehr sporadisch und mein Wissen basiert nur auf der Internetsuche von Codes (und scheinbar suche ich jetzt gerade nach den falschen Schlagwörtern) ;) Daher schon mal vielen Dank für eure Hilfe.

Sub NachWordKopieren()

Application.ScreenUpdating = False

Dim gefunden As Range
Dim gesuchterWert As String
Dim zelle As Range
Dim wd As Object

For Each zelle In ActiveSheet.Range("A:A").Cells
If zelle.Text = "2" Then
zelle.Activate
Exit For
End If
Next

ThisWorkbook.Sheets("Requirements").Range("A:A").Find(what:=gesuchterWert)

ThisWorkbook.Sheets("Requirements").Range(Cells(8, 1), Cells(ActiveCell.Row - 1, 11)).Copy

Set appWord = CreateObject("word.application")
Set doc = appWord.Documents.Add("\\...\test.docx") '*** verwendet Datei nur als Vorlage ***

appWord.Visible = True

doc.Bookmarks("Test").Range.Paste '*** Zeile bestimmen - Tabelle rein ***

Application.ScreenUpdating = True

End Sub

jack_D
13.07.2015, 10:43
Hallo Saarda,

Durch Internetsuche habe ich mein Code zum Teil schon aufbauen können, aber jetzt trete ich auf der Stelle. Leider ist Wert "1" bisher eine feste Zeilennposition und bisher nur Wert "2" variabel.
HÄÄ? Versteh ich nicht.

Zu deinem Code.

Der weißt noch ein paar Schwachstellen auf.

1. Warum zelle.Text = "2" wenn du eine Zahl suchst, warum versuchst du dann nach einem String zu "Suchen". Daher besser zelle.value=2

2.
ThisWorkbook.Sheets("Requirements").Range("A:A").Find(what:=gesuchterWert)
Der Suchwert ist hier eine variable, der du (in dem Code den du hochgeladen hast) keinen Wert zuweisst.
Die Suche wird also immer ins leere laufen.

Wenn ich dein Ansinnen so einigermaßen verstehe brauchst du sowas wie :(UNGETESTET)

Private Sub BereichSuchen()
Dim Suchwert1 As String
Dim Suchwert2 As String

Dim C1 As Range
Dim C2 As Range

Dim ErsteZeile1 As Long
Dim ErsteZeile2 As Long


Suchwert1 = "Brot"
Suchwert2 = "Brötchen"

With Worksheets("Requirements").Range("a1:a500")

'Erste Suche
Set C1 = .Find(Suchwert1, LookIn:=xlValues)
If Not C1 Is Nothing Then
ErsteZeile1 = C1.Row
End If

'Zweite Suche
Set C2 = .Find(Suchwert2, LookIn:=xlValues)
If Not C2 Is Nothing Then
ErsteZeile2 = C2.Row
End If

'Kopieren
.Range(Cells(ErsteZeile1, 1), Cells(ErsteZeile2, 11)).Copy
End With

End Sub


Grüße

saarda
13.07.2015, 13:02
Hallo jack_D

vielen Dank es funktioniert.

Ja hast recht ein Teil von meinem Code war natürlich quatsch und war noch ein Überbleibsel von zuvor (2.). Dein erstgenannter Punkt ist vor allem auf meine sehr begrenzten VBA-Kenntnisse zurückzuführen ;)

Danke nochmal

jack_D
13.07.2015, 13:24
Alles gut.

Vielen Dank für die Rückmeldung =)

Grüße