Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Namen aus anderen Tabellenblatt

Forumthread: Namen aus anderen Tabellenblatt

Namen aus anderen Tabellenblatt
17.04.2025 22:39:12
UdPa
Hallo
Ich habe diesen Code für Zufallslosung, (Tabellenblatt"Losen" Namen gebe ich ab B2:B25 ein) der funktioniert eigentlich gut, nun möchte ich aber aus optischen Gründen, die Namen die gelost werden sollen von einem anderen Tabellenblatt ("Teilnehmer" ab R2:R25) in das tabellenblatt "Losen" übernehmen,mit =WENN(Teilnehmer!R2="";"Freilos";Teilnehmer!R2), nur der Code läuft dann nicht mehr. Wie kann man das Fachgerecht machen?

Vielen Dank für eure Hilfe

Hier der Code:

Sub ZufallsNamen()



Dim rng As Range
Dim iRowL As Integer, iCell As Integer, iCol As Integer
Dim iRow As Integer, iAct As Integer
Dim sName As String

' Inhalte in Spalten D:G löschen
Columns("D:G").ClearContents

' Gruppennamen in Kopfzeile ab Spalte D einfügen
For iCol = 1 To 4
Cells(2, iCol + 3) = "Gruppe" & CStr(iCol) ' Ab Spalte D beginnen
Next iCol

Randomize
iRowL = Range("B2").CurrentRegion.Rows.Count ' Bereich beginnt ab B2
iRow = 3
iCol = 4 ' Gruppen beginnen ab Spalte D

For iCell = 1 To iRowL
iAct = Int((iRowL * Rnd) + 2) ' Zufällige Zeile ab B2
sName = Cells(iAct, 2).Value ' Namen aus Spalte B lesen
Set rng = Range("D2").CurrentRegion.Find( _
what:=sName, lookat:=xlWhole, LookIn:=xlValues)
Do While Not rng Is Nothing
iAct = Int((iRowL * Rnd) + 2) ' Zufällige Zeile ab B2
sName = Cells(iAct, 2).Value ' Namen aus Spalte B lesen
Set rng = Range("D2").CurrentRegion.Find( _
what:=sName, lookat:=xlWhole, LookIn:=xlValues)
Loop
Cells(iRow, iCol) = sName ' Namen einfügen
iCol = iCol + 1
If IsEmpty(Cells(2, iCol)) Then
iRow = iRow + 1
iCol = 4
End If
Next iCell

End Sub
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Namen aus anderen Tabellenblatt
17.04.2025 23:42:59
Uduuh
Hallo,
sName = Sheets("Teilnehmer").Cells(iAct, 18).Value

Gruß aus'm Pott
Udo
AW: Namen aus anderen Tabellenblatt
18.04.2025 14:37:01
{Boris}
Hi,

kleiner Tipp: Referenziere IMMER das gewünschte Tabellenblatt mit - damit bist Du vor jeder Überraschung gefeit.

Also statt

Cells(Zeile, Spalte)


schreibst Du

Worksheets("Blattname").Cells(Zeile, Spalte)


Und falls mehrere Aktionen in einem bestimmten Blatt notwendig sind, verwende die With-Anweisung:

With Worksheets("Blattname")

.Cells(2, 4).Font.Bold = True
.Cells(3, 5).Value = "Irgendein Text"
.Columns("F:F").Delete
End With


Hier muss Du immer dran denken, jeweils den Punkt (.) davor zu setzen, da sich die Anweisungen ansonsten auf das aktive Tabellenblatt beziehen.

Falls der Code im Modul eines Tabellenblattes (also nicht in einem allgemeinen Modul) stehen sollte, würde ich auch immer das Tabellenblatt mit angeben - auch wenn die Aktionen in diesem Tabellenblatt ablaufen. Dafür gibt es dann das Schlüsselwort 'Me':

Me.Cells(1, 1).Value = "Hallo Welt"


Das 'Me' ist zwar nicht notwendig, signalisiert Dir aber sofort, in welchem Tabellenblatt Du gerade Aktionen durchführst und erleichtert Dir die Lesbarkeit und Nachvollziehbarkeit.

VG, Boris
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18