Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1768to1772
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

Wie kann activate verzichtet werden?

Wie kann activate verzichtet werden?
06.07.2020 08:25:03
Peter
Guten Morgen,
ich habe einen Code der bei mir nur dann funktioniert, wenn ich die betreffende Tabelle aktiviere.
Könnt ihr mir bitte helfen, wie ich dies verhindern kann.

Sub Kategorien_suchen2()
Dim wb As Workbook         'benötigt für aktuelle Workbook
Dim wsKat As Worksheet     'benötigt für Tabelle Kategorien
Dim adrKat As Range        'benötigt für Suchadresse
Dim AnzKat As Integer      'benötigt für gefundener Anzahl
Dim sKat As String         'benötigt für Tabelle Kategorien
Set wb = ThisWorkbook
Set wsKat = wb.Worksheets("Kategorien")
With wsKat
wsKat.Activate  'Kann dies beseitigt werden?
sKat = InputBox("Geben Sie den Suchbegriff ein!")  'später ersetzen durch Textbox
If sKat = "" Then Exit Sub                         'wenn Suchbegriff leer dann exit
Set adrKat = .Range("E2:E" & Range("E65536").End(xlUp).Row)
AnzKat = Application.WorksheetFunction.CountIf(adrKat, sKat)
If AnzKat = 5 Then
MsgBox "die Anzahl der ermittelten Kategorien " & AnzKat & " = 5"
ElseIf AnzKat  5 Then
MsgBox "die Anzahl der ermittelten Kategorien " & AnzKat & " grösser 5"
End If
End With
End Sub
Gruss
Peter

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

Betreff
Datum
Anwender
Anzeige
AW: Wie kann activate verzichtet werden?
06.07.2020 08:36:25
Werner
Hallo,
die Zeile mit dem Activate raus und hier
Set adrKat = .Range("E2:E" & .Range("E65536").End(xlUp).Row)

muss vor dem zweiten Range noch ein Punkt hin, damit auf das im With angegebene Blatt referenziert wird.
Gruß Werner
AW: funktioniert
06.07.2020 08:40:40
Peter
Guten Morgen Werner,
klappt einwandfrei. Immer diese kleinen Fehler.
Vielen Dank für Deine Hilfe und noch einen schönen Tag.
Gruss
Peter
Gerne u. Danke für die Rückmeldung. o.w.T.
06.07.2020 09:21:47
Werner
wsKat.Activate 'Kann dies beseitigt werden?
06.07.2020 09:05:38
Helmut
Hallo,
warum probierst Du es nicht aus?
Und den Punkt zu finden ist schwieriger als einen Beitrag zu eröffnen!
Gruß
kein Fehler, aber ...
06.07.2020 11:38:06
Klaus
... diese korrigierte Zeile (mit Punkt vor dem zweiten Range):
Set adrKat = .Range("E2:E" & .Range("E65536").End(xlUp).Row)
ist zwar logisch korrekt, aber nicht 100% zuverlässig. 65536 Zeilen war das Limit von Excel vor Version 2007, glaube ich (ok ... du hast auch Version 2003 angegeben). Im aktuellen Excel gibt es aber 1048576 Zeilen. Sollte jetzt also jemand deine 2003-er Datei nehmen, in Excel 2016 öffnen und den Dateityp zu xlsm konvertieren und dann über 65536 Einträge vornehmen (was ja ginge), liefe das Makro nicht mehr korrekt.
Einfach Range("E1048576") zu nehmen geht aber auch nicht, dann läuft es nicht mehr in der Version 2003. Und: Wir wissen ja nicht, ob die nächste Excelversion nicht noch mehr Zeilen liefert. Lösung: Einfach die Zeilen zählen, die Verfügbar sind!
Umständliche Lösung (um das Prinzip klar zu machen):

Dim lRow As Long
lRow = .cells(.Rows.Count, 5).end(xlUp).row 'ermittele die Anzahl der Zeilen, gehe von dort  _
nach oben
Set adrKat = .Range("E2:E" & lRow)
Realitätscheck: Es wird wahrscheinlich zu 99,99999% auch ohne diese Anpassung immer funktionieren, da die Benutzung von weit über 60k Zeilen doch sehr selten aufkommt. Andererseits sollte man potentielle Fehler vermeiden ... bis in die späten 80er hinein hat auch jeder gedacht, zwei Byte reichen um die Jahreszahl zu speichern, und im Jahr 2000 hatten wir dann den Salat :-)
LG,
Klaus M.
Anzeige
AW: kein Fehler, aber ...
07.07.2020 04:54:03
Peter
Hallo Klaus,
vielen Dank für Deinen Hinweis. Ich werde dies in meiner Datei entsprechend berücksichtigen.
Gruss
Peter

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige