Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Code ohne Activate

Forumthread: Code ohne Activate

Code ohne Activate
15.10.2022 10:32:36
Henry
Hallo liebes Forum,
ich habe folgende zwei Codes, die zunächst einmal einwandfrei funktionieren.
Das einzige was mich stört ist, dass ich mit Activate das Tabellenblatt anwählen muss.
Ich möchte aber gerne in dem aktuellen Arbeitsblatt bleiben und nicht immer in das Tabellenblatt "stammdaten" springen.
Kann mir jemand helfen die beiden Codes ohne die Activate-Anweisung zu schreiben?
Über eure Hilfe wäre ich sehr dankbar.:-)

Public Sub NameSuchen(frm As UserForm)
Dim Zeile As Integer
ThisWorkbook.Worksheets("stammdaten").Activate
frm.cmb_alias.Clear
Zeile = 2
Do While Cells(Zeile, 1).Value  ""
If InStr(StrConv(Cells(Zeile, 1).Value, vbUpperCase), _
StrConv(frm.txt_suche.Text, vbUpperCase)) _
> 0 Then
frm.cmb_alias.AddItem Cells(Zeile, 1).Value
End If
Zeile = Zeile + 1
Loop
If frm.cmb_alias.ListCount  0 Then
frm.cmb_alias.ListIndex = 0
End If
End Sub

Public Function ZeileNameSuchen(frm As UserForm) _
As Integer
Dim Zeile As Integer
ThisWorkbook.Worksheets("stammdaten").Activate
Zeile = 2
Do While Cells(Zeile, 1).Value  ""
If Cells(Zeile, 1).Value = _
frm.cmb_alias.Text Then
Exit Do
End If
Zeile = Zeile + 1
Loop
ZeileNameSuchen = Zeile
End Function
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code ohne Activate
15.10.2022 11:03:06
GerdL
Moin Henry
With Worksheets("stammdaten")
------ .Cells(Zeile, 1)
.....
.....
End With
Du kannst auch jedesmal Worksheets("stammdaten").Cells(..,..) schreiben.
Gruß Gerd
AW: Code ohne Activate
15.10.2022 11:07:21
Henry
Hallo Gerd,
ich habe die Codes nun wie folgt abgeändert.
Allerdings bekomme ich immer den Fehler Laufzeitfehler 9 "Index außerhalb des gültigen Bereichs".

Public Sub NameSuchen(frm As UserForm)
Dim Zeile As Integer
With Worksheets("stammdaten")
frm.cmb_alias.Clear
Zeile = 2
Do While .Cells(Zeile, 1).Value  ""
If InStr(StrConv(.Cells(Zeile, 1).Value, vbUpperCase), _
StrConv(frm.txt_suche.Text, vbUpperCase)) _
> 0 Then
frm.cmb_alias.AddItem .Cells(Zeile, 1).Value
End If
Zeile = Zeile + 1
Loop
If frm.cmb_alias.ListCount  0 Then
frm.cmb_alias.ListIndex = 0
End If
End With
End Sub

Public Function ZeileNameSuchen(frm As UserForm) _
As Integer
Dim Zeile As Integer
With Worksheets("stammdaten")
Zeile = 2
Do While .Cells(Zeile, 1).Value  ""
If .Cells(Zeile, 1).Value = _
frm.cmb_alias.Text Then
Exit Do
End If
Zeile = Zeile + 1
Loop
ZeileNameSuchen = Zeile
End With
End Function

Anzeige
AW: Code ohne Activate
15.10.2022 11:19:57
Henry
Ich habe den Fehler gefunden.
Nun klappt alles.
Vielen Dank Gerd.
Buchcode
15.10.2022 11:24:33
RPP63
Moin!
Solch "seltsamen" Code kenne ich eigentlich nur aus gewissen VBA-Büchern, die sich gezielt an Anfänger richten.
Statt einer solchen Schleife würde ich direkt mittels Application.Match() suchen!
Mal ein Beispielcode von hary aus diesem Forum (ich selbst war zu faul, dies jetzt selbst zu schreiben):

Dim a As Variant
a = Application.Match("x", Sheets("Tabelle2").Range("A1:A6"), 0) ' sucht x im Bereich
If Not IsNumeric(a) Then 'wenn nicht vorhanden dann
MsgBox "nicht vorhanden" 'hier kommt dein Code hin
Else                     'sonst
MsgBox "vorhanden in Zeile " & a
End If
Gruß Ralf
Anzeige
AW: Code ohne Activate
15.10.2022 15:28:26
Daniel
Hi
Grundsätzlich ist das so:
Du hast die drei hierarchischen Elemente:
1. Datei (Workbook)
2. Tabellenblatt (WorkSheet)
3. Zelle (Cells/Range)
Diese sind vergleichbar mit den hierarchischen Elementen einer normalen Adresse:
1. Land
2. Stadt
3. Straße (+Hausnummer)
Wenn du jetzt bspw einen Brief abschickst und nur die Strasse angibst, dann muss die Post annehmen, dass du eine Straße in der Stadt meinst, in der du dich gerade befindest.
Willst du den Brief aber in eine andere Stadt schicken, dann musst du, wenn du weiterhin nur die Strasse angeben willst, zuerst in die andere Stadt fahren und dort den Brief einwerfen.
Wenn du aber zusätzlich zur Straße auch noch die Stadt dazu schreibst, dann kannst du den Brief in jeder beliebigen Stadt aufgeben, sofern sich Aufenthaltsort und Zielort im selben Land befinden. Soll der Brief über Ländergrenzen, dann muss man auch noch das Land mit angeben.
Und genauso ist es in Excel auch.
Gruß Daniel
Anzeige
AW: Code ohne Activate
15.10.2022 22:55:57
snb

Sub M_snb()
combobox1.List =Filter([transpose(Stammdaten!A2:A2000)], TextSuche, , 1)
End Sub

;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige