MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 08.02.2019, 11:58   #1
fl0wing
Neuer Benutzer
Neuer Benutzer
Standard VBA - Zelle mit Variable

Hallo, und zwar habe ich eine Excel und möchte Zählenwenn benutzen, jedoch soll beim erstellen der Zelle automatisch der Zellbezug geändert werden, also Zählenwenn(A7:Z7,..) nächste Zeile Zählenwenn(A8:Z8,...) wie ändere ich den Code in VBA?

Code:

For Each zeile In liste
            If Not IsEmpty(zeile.Value) Then
                'zeilenhöhe
                ActiveSheet.Rows(l & ":" & l).RowHeight = 14

 'letzte spalte
                With ActiveSheet.Cells(l, TageImMonat + 3)
                    .FormulaLocal = "=ZÄHLENWENN(C7:AF7;" & Chr(34) & "U" & Chr(34) & ")"
                    .Borders.LineStyle = xlContinuous
                    .Borders(xlEdgeLeft).Weight = 3
                    .Borders(xlEdgeRight).Weight = 3
                End With
Dies ist natürlich nur ein Teil des Codes, aber ich denke, das wichtigste, da man hier sieht, dass das ganz schon in einer For Each Schleife steht.
Kann man einfach den Zeilenindex durch eine Variable ersetzen, die sich pro durchgang erhöht?

Danke im Voraus!
fl0wing ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.02.2019, 12:50   #2
HKindler
MOF User
MOF User
Standard

Hi,

verwende .FormulaR1C1Local und die Formel ist für jede Zelle gleich. Wie sie lauten muss, kannst du leicht ermitteln: Trage sie einmal (notfalls händisch) in die richtige Zelle ein. Markiere die Zelle und gibt im Direktbereich des VBA-Editors den Befehl ?ActiveCell.FormulaR1C1Local ein. Schon wird dir die Formel korrekt angezeigt. Sollten "-Zeichen darin vorkommen, musst du diese verdoppeln.

Aber ich würde das ganz anders aufziehen:
Code:

set temp = Liste.SpecialCells(xlCellTypeBlanks)
With Liste.Offset(,TageImMonat + 3 - Liste.Column)
    .FormulaLocal = "=ZÄHLENWENN(C7:AF7;" & Chr(34) & "U" & Chr(34) & ")"
    .Borders.LineStyle = xlContinuous
    .Borders(xlEdgeLeft).Weight = 3
    .Borders(xlEdgeRight).Weight = 3
End With
Temp.Offset(,TageImMonat + 3 - Liste.Column).Clear
So kommst du komplett ohne Schleife aus und dein Programm ist um den Faktor der Zeilenzahl schneller (bei 10 Zeilen 10x bei 100 Zeilen 100x).

__________________

Gruß,
Helmut

Win10 (64Bit) / Office365 (32Bit)

Geändert von HKindler (08.02.2019 um 12:54 Uhr).
HKindler ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.02.2019, 13:17   #3
fl0wing
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

danke, hat funktioniert!
fl0wing ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:46 Uhr.



Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.