Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Spalten und Zeilen sperren in Verbindung mit VBA
#21
Auch da gebe ich die vollkommen recht, und auch das habe ich nicht beachtet. Aber!! Wenn der bearbeitende Mitarbeiter in D "Planung an Kd." schon ein Datum eingetragen hat, wird dieser Fall nicht mehr geändert oder gelöscht. Aber eigentlich um Datenmüll zu mindern, müsste natürlich alles was hinter B an Text eingegeben wird gelöscht werden. Aber ich glaube das ist erstmal nicht nötig, denke ich.
Antworten Top
#22
Ich habe zwar Zweifel an der Vorgehensweise, aber Versuch macht Kluch. Ohne Testdatei mach ich aber kein Code. Denn so hast du Recht, geht es nicht ohne VBA.
Antworten Top
#23
Zitat:Ohne Testdatei mach ich aber kein Code.
Irgendwie hatten wir den Ruf nach einer Beispieldatei das schon mal.  19

Da ein Bild kommen wird, empfehle ich Gimp  05
Antworten Top
#24
Danke Elex!

Ich habe eins meiner Probleme selber gefunden, hier der richtige Code

Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice
    Dim xRg As Range
    Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
        For Each xRg In Range("A1:A900")
            If (xRg.Value = "") Or (xRg.Value = "0") Then
                xRg.EntireRow.Hidden = True
            Else
                xRg.EntireRow.Hidden = False
            End If
        Next xRg
  Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Call Calculate
End Sub
Antworten Top
#25
gelöscht, Gedankenfehler.
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#26
Hi

Zitat:Application.Calculation = xlCalculationManual
Das bringt Verbesserung? Hast du Formeln mit Teilergebnis in der Datei? Sonst dürft das Ein/Ausblenden keine Berechnung hervorrufen.
Antworten Top
#27
Hi,

dein Vorgehen ist generell falsch.

Aber da du trotzdem dabei bleiben wirst (das Spielchen kennen wir alle, spätestens bei der 5. Nachfrage kommt dann: "geht nicht, denn das haben wir immer schon so gemacht" und bei der 7. Nachfrage dann: "der Chef will es aber so"), gebe ich dir mal einen Tipp, wie du locker den Faktor 1000 an Rechentempo rausholen kannst:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice
Dim vA As Variant
Dim i As Long
Dim rgWeg As Range
'Application.ScreenUpdating = False     'Überflüssig
'Application.Calculation = xlCalculationManual   'Überflüssig
vA =  Range("A1:A900")
For i = 1 to 900
    If (vA(i, 1) = "") Or (vA(i, 1) = "0") Then
        If rgWeg Is Nothing Then
            set rgWeg = Rows(i)
        Else
            Set rgWeg = Union(rgWeg, Rows(i)     'war: Intersect(rgWeg, Rows(i))
        End If
    End If
Next I
Rows("1:900").Hidden = False
rgWeg.Hidden = True
'Application.ScreenUpdating = True    'überflüssig
'Application.Calculation = xlCalculationAutomatic    'überflüssig
Call Calculate    'vermutlich ebenfalls überflüssig, aber ich lass es mal drin
End Sub
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top
#28
Das rgWeg.Hidden = True dürfte aber auch nicht gehen, da fehlt doch ein rows, oder?
Und  Set rgWeg = Intersect(rgWeg, Rows(i)) scheint auch nicht ganz korrekt  Huh
[-] Folgende(r) 1 Nutzer sagt Danke an Warkings für diesen Beitrag:
  • HKindler
Antworten Top
#29
Hi Warkings,

danke für den Hinweis, habe oben das Intersect() zu Union() geändert (so wie es eigentlich sowieso von mir gedacht war).

rgWeg.Hidden sollte eigentlich klappen, da es ja ganze Reihen sind. Wenn nicht müsste man es tatsächlich durch rgWeg.EntireRow.Hidden ersetzen. Kann es leider nicht testen, da ich gerade am iPad sitze...
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste