# Wert ein Sheet suchen und Eintrag in nächste freie Zelle dahinter eintragen



## Hasi_ (3. Februar 2011)

Hallo zusammen,

ich habe eine Userform gebastelt in der ich über eine Combobox das Sheet auswähle in dem ein Eintrag erfolgen soll und in dem Textfeld darunter wird der Wert manuell eingegeben. über ein Button wird das ganze in das entsprechende Sheet übertragen. Die Werte stehen dann dem Sheet in einer Spalte untereinander

Hier der Code dazu:
Private Sub Team_Übernehmen_Click()
Sheets(Turnier.Value).Select
Cells(Cells(Rows.Count, "A").End(xlUp).Row + 1, "A").Value = Mannschaft
Worksheets("Eingabeseite").Activate
Mannschaft = ""
End Sub

In einem weitere Step erstelle ich eine neue Userform. Hier möchte ich die obigen Werte über eine Combobox auswählen und dann zu diesem Wert X verschiedene Einträge machen in unterschiedlichen Textfeldern (je Textfeld ein Eintrag). Diese Einträge werden dann mit einem Butto wieder übertragen und sollen in dem Sheet mit dem Eintrag hinter diesen Eintrag geschrieben werden. Je Textfeld eine Zelle hinter dem oben übertragenen Wert.

Hier komme ich nicht weiter. Zum einen muss ich ja alle Sheets nach diesem Eintrag durchsuchen und zum anderen soll das ja nicht in einer Spalte untereinander, sonder in einer Zeile nebeneinander.

Ich hoffe ich konnte mich halbwegs deutlich ausdrücke und hoffe, dass da jemand eine Idee hat.

Vielen Dank
Daniel


----------



## tombe (3. Februar 2011)

Mit welcher Excel Version arbeitest du bzw. kannst du die Datei hier im 2000-er Format reinstellen?

Damit zu arbeiten wäre einfacher als das jetzt nachzustellen.


----------



## Hasi_ (3. Februar 2011)

Hallo tombe,

ich arbeite mit 2003. Datei ist im Anhang, unter Mannschaft einpflegen ist das was schon fertig ist und funtkioniert und unter Spieler pflegen soll dann die Maske entstehen wo ich einzelene Spieler der Mannschaft dann zuordnen kann.

Leider konnte ich keine Excel-Datei hochladen und habe diese dann in ein rar-Archiv gepackt

Gruß
Daniel


----------



## tombe (3. Februar 2011)

Ich habe das jetzt so gelöst das in der zwieten Form das Listenfeld 3 Spalten bekommt (sind im Momant auch alle sichtbar, kann aber geändert werden indem du die ColumnWidth auf z.B. "0;0; 50" änderst)

In der ersten Spalte wird die Nummer der Tabelle eingetragen, in der zweiten Spalte die Zeile im jew. Blatt und in der dritten Spalte dann der entsprechende Text.

Wird jetzt auf den Button geklickt, werden diese Werte ausgelesen und damit die Tabelle und die Zeile angesprochen.

Weiter solltest du jetzt alleine kommen. Ansonsten einfach wieder melden.

Gruß Thomas


----------



## Hasi_ (3. Februar 2011)

klasse, vielen dank....das hilft mir erst einmal weiter denke ich


----------



## Hasi_ (3. Februar 2011)

hmmm so ganz funktioniert das noch nicht....
habe es eingebaut bei mir uns entsprechend angepasst...aber in meiner combobox kommt kein eintrag zum vorschein.....
ichhabe die neue datei noch einmal angehängt mit meiner userform drin.


----------



## tombe (3. Februar 2011)

Manchmal sind es die Feinheiten die Probleme machen. Du hast den Code zum Füllen der Liste nicht in die Form_Activate Prozedur sondern in Form_Click geschrieben. Außerdem ist noch ein Schreifehler drin.

Ändere es mal so ab:


```
Private Sub UserForm_Activate()
For a% = 1 To Worksheets.Count
    For b% = 1 To Sheets(a%).Cells(Rows.Count, 1).End(xlUp).Row
        Team.AddItem a%    'die Nummer des Blattes
        Team.Column(1, Team.ListCount - 1) = b%   'die Zeile in der Tabelle
'diese Zeile ist bei dir falsch !
        Team.Column(2, Team.ListCount - 1) = Sheets(a%).Cells(b%, 1).Value  'der Wert der Zelle
    Next b%
Next a%
End Sub
```


----------



## Hasi_ (7. Februar 2011)

o.k. das passt soweit und funktioniert auch.....jetzt habe ich aber daraus 2 weitere Probleme mit denen ich nicht klarkomme.

1. er zeigt in der Combobox an der ersten stelle immer eine zahl an. das ist so wie ich den code verstehe, die nummer des tabellenblattes in dem sich der wert befindet. kann ich dies ausblenden?
2. soll er erst ab dem dritten blatt suchen. das kann man doch mit sicherheit eingrenzen, oder?

ich habe schon versucht den code entsprechend zu verändern, komme da aber nicht hinter.


----------



## tombe (8. Februar 2011)

```
'Der Wert 1 bedeutet das mit der ersten Tabelle begonnen wird,
'For a% = 1 To Worksheets.Count
'deshalb aus der 1 einfach eine 3 machen
For a% = 3 To Worksheets.Count
    For b% = 1 To Sheets(a%).Cells(Rows.Count, 1).End(xlUp).Row
        Team.AddItem a%    'die Nummer des Blattes
        Team.Column(1, Team.ListCount - 1) = b%   'die Zeile in der Tabelle
'diese Zeile ist bei dir falsch !
        Team.Column(2, Team.ListCount - 1) = Sheets(a%).Cells(b%, 1).Value  'der Wert der Zelle
    Next b%
Next a%
```

Um die beiden Spalten in der Liste auszublenden:
Wenn du im VB-Editor bist und dir die Eigenschaften des Listenelements anzeigen lässt, findest du die Eigenschaft "ColumnWidths". Hier gibst du bei den ersten beiden Werten jeweils den Wert 0 ein (steht aber bereits im Beitrag weiter oben auch schon drin).


----------



## Hasi_ (8. Februar 2011)

klasse, vielen dank....funktioniert jetzt alles....
dann will ich mal weiter machen..ich denke ich komme noch mal mit einigen fragen vorbei in dem forum


----------

