Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen

OPTIONAL - Code vereinfachen


Betrifft: OPTIONAL - Code vereinfachen von: Burak
Geschrieben am: 06.12.2017 11:53:59

Guten Morgen erneut,

die letzte Anfrage (für heute :D).

Dies ist rein OPTIONAL und bedarf keiner Priorität.

Es geht darum, dass ich gerne meinen Code so übersichtlich und vereinfacht wie möglich haben möchte.

Aufgrund von Daten, die ich nicht veröffentlichen kann, habe ich eine txt.Datei mit dem Code statt der Excel Tabelle hinzugeft.

https://www.herber.de/bbs/user/118138.txt

Wenn jmd Zeit und Lust hat, würde mich über jede Hilfe sehr freuen :)

  

Betrifft: AW: OPTIONAL - Code vereinfachen von: mumpel
Geschrieben am: 06.12.2017 12:05:55

Hallo!

Kleines Beispiel ohne "Select":

Sub TabellenBereinigen()
Dim i As Long
    For i = 2 To Worksheets.Count
      With Worksheets(i)
          .Cells.Clear
        If .ChartObjects.Count > 0 Then
           .ChartObjects.Delete
        End If
      End With
    Next i
End Sub


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0

Gruß, René


  

Betrifft: AW: OPTIONAL - Code vereinfachen von: Burak
Geschrieben am: 06.12.2017 12:10:52

Ja das hat schonmal sehr geholfen, da er nicht jedes Tabellenblatt erst dafür öffnet.

Danke dir :*


  

Betrifft: VBA-Konverter von: lupo1
Geschrieben am: 06.12.2017 22:41:32

Hallo mumpel,

im Reiter "Weitere Einstellungen" ist das Dialogfeld m.E. zu hoch (keine Reserve, aufgrund voller Bildschirmhöhenausnutzung). Die Schaltflächen verbergen sich unter der Windows-Startleiste. Außerdem werden manche Labels zweizeilig und sind dann nicht mehr komplett zu lesen.

Surface Pro 4, 2736 x 1824 Pixel (!), Bildschirm auf 225%.

Ich habe den Konverter gerade eben erst runtergeladen.


  

Betrifft: AW: VBA-Konverter von: mumpel
Geschrieben am: 07.12.2017 11:14:24

Meinst Du unser "VBAHTML"? Am Dialog wird sich nichts ändern. Optisch angepasst ist der eher an hohe Auflösungen. Man kann Dialoge zwar skalieren, aber dann sieht es noch schlechter aus.


  

Betrifft: hmm ... von: lupo1
Geschrieben am: 07.12.2017 12:30:45

Ich wollte nur gesagt haben:

Es wäre besser, wenn Ihr das Dialogfeld in der Höhe etwas schrumpft. Denn es breitet sich auf 100% Bildschirmhöhe aus, egal, ob es verdeckt wird oder nicht. 90% oder 95% reichen ja schon.

Und das ist unergonomisch.

Ich habe das Glück, dass ich den Bildschirm rotieren kann. Nur so konnte ich es überhaupt einmal ganz sehen (die Windows-Startleiste wollte ich deswegen nicht ausblenden müssen). Bei 100% Bildschirmhöhennutzung kann man das Dialogfeld vertikal nicht bewegen.


  

Betrifft: AW: hmm ... von: mumpel
Geschrieben am: 07.12.2017 20:08:48

Den Dialog kann ich nicht noch kleiner machen. Dann passt nämlich nichts mehr rein. Es sei denn ich nehme ein paar Funktionen raus (z.B. die FTP-Funktion).


  

Betrifft: AW: OPTIONAL - Code vereinfachen von: mumpel
Geschrieben am: 06.12.2017 12:25:35

Im Übrigen müsstest Du bei "Formatierung sämtlicher Arbeitsblätter" eine Fehlermeldung bekommen, da das "For i" nicht abgeschlossen ist (da fehlt "Next i").


  

Betrifft: AW: OPTIONAL - Code vereinfachen von: Burak
Geschrieben am: 06.12.2017 12:59:19

nein ehrlich gesagt liegt das nur daran dass ich scheinbar wie auch immer beim kopieren das ausgelassen habe. es steht aber eins drin. :)


  

Betrifft: AW: OPTIONAL - Code vereinfachen von: onur
Geschrieben am: 06.12.2017 17:24:56

Wenn du das eine eine sub schreibst, brauchst nicht alles 2x zu haben, rufst stattdessen die sub auf:

Set ws = ActiveWorkbook.Sheets("R5")
            Worksheets("R5").Activate
            Range("B1").Select
            Zeilenzahl = Selection.CurrentRegion.Rows.Count
            Range("B" & Zeilenzahl + 1).Value = "keine Daten"
            Range("C" & Zeilenzahl + 1).Value = "für"
            Range("D" & Zeilenzahl + 1).Value = enddatum - 1
            Range("E" & Zeilenzahl + 1).Value = "6 Uhr früh"
            Range("F" & Zeilenzahl + 1).Value = "bis"
            Range("G" & Zeilenzahl + 1).Value = enddatum
            Range("H" & Zeilenzahl + 1).Value = "6 Uhr"
            Range("I" & Zeilenzahl + 1).Value = "früh"

Wenn du dafür eine Funktion schreibst
bauteilFehlt = WorksheetFunction.CountIfs(Range("A2:A" & Zeilenzahl), barcode, Range("G2:G" & Zeilenzahl), bauteil, Range("H2:H" & Zeilenzahl), "=1")

und ihr den Range und den Vergleichswert übergibst, msst du nur z.B. eingeben:
bauteilFehlt =MeineFunktion("H2:H" & Zeilenzahl,"=1")



  

Betrifft: AW: OPTIONAL - Code vereinfachen von: Burak
Geschrieben am: 07.12.2017 07:57:59

Guten Morgen,

danke schonmal.

also das mit dem Sub für die 10 Zeilen hat super funktioniert, musste eine Variable nur auf global setzen.

Was die Funktion angeht, ich verstehe was du meinst, hab bisher noch gar nich mit Functions gearbeitet, daher hat mein erster Versuch natürlich nicht geklappt:

Private Sub xx()

...

bauteilFehlt = zaehlen(Range("H2:H" & Zeilenzahl), "=1")

...

End Sub
Function zaehlen(x As String) As String

zaehlen = WorksheetFunction.CountIfs(Range("H2:H" & Zeilenzahl), fehlercode, x)

End Function Wo liegt mein Fehler?

Grüße


  

Betrifft: AW: OPTIONAL - Code vereinfachen von: onur
Geschrieben am: 07.12.2017 08:05:39

Schaue ich mir an, sobald ich zu hause bin.


Beiträge aus den Excel-Beispielen zum Thema "OPTIONAL - Code vereinfachen"