VBA – die besten Beiträge

VBA mehrere Tabellen zur PDF zusammenfügen?

Hallo,

ich habe ein kleines Problem mit dem Erstellen von mehreren PFD-Seiten aus unterschiedlichen Tabellenblätter. Je nach Erfüllung der Bedingung (If-Abfrage) wird eine PDF erstellt.

Sofern nur ein eine Tabelle angesprochen wird, gibt es keine Probleme mit der Erstellung. Dabei ist es egal, ob die Tabelle oder zwei Seiten hat. Die Formatierung/Range ist korrekt und das Makro läuft durch.


Sheets("DUZ").Select
Range("A1:Y52").Select
Selection.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\DUZ.pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False

Aber soweit ich auf zwei oder mehr Tabellenblätter zugreife, gibt es Probleme:

Sheets(Array("Deckblatt", "Übersicht", "Tagebuch", "Ges", "Reisekosten", "DUZ")).Select
Selection.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\Tagebuch_RZ_DUZ.pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False

Wie kann ich entsprechend die Range unterbringen, sodass es evtl. problemlos klappt?

'Sheets("Deckblatt").Select --> Hochformat (1 Seite)
'Range("A1:H43").Select
                    
'Sheets("Übersicht").Select --> Querformat (1 Seite)
'Range("A1:R35").Select
                    
'Sheets("Tagebuch").Select --> Hochformat (6 Seiten)
'Range("A1:V146").Select
                    
'Sheets("Ges").Select --> Hochformat (1 Seite)
'Range("A1:G43").Select
                    
'Sheets("DUZ").Select --> Querformat (2 Seiten)
'Range("A1:Y52").Select
                    
'Sheets("Reisekosten").Select --> Hochformat (1 Seite)
'Range("A1:N57").Select

Aktueller Fehlerhinweis: Anwendungs- oder objektdefinierter Fehler.

Ich hatte es auch mal wie folgt versucht, aber dann stimmt die Formatierung nicht (wenn es einzeln gespeichert wird, ist sie aber richtig). Außerdem wird dann beim Schreibschutz rumgemeckert (am Ende werden die Blätter wieder mit Schreibschutz versehen). Jedenfalls gibt es diese Probleme beim einzelnen nicht.

Sheets("DUZ").Select
Range("A1:Y52").Select
                    
Sheets("Reisekosten").Select
Range("A1:N57").Select

Sheets(Array("Reisekosten", "DUZ")).Select
Selection.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\Reisekosten_DUZ.pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False

Hat jemand eine Idee?
Gruß
Computer, Microsoft Excel, Technik, programmieren, VBA, Technologie

Aufgabe automatisieren VBA Excel Text in Tabelle konvertieren?

Hallo Leute,

ich habe einen Text den ich aus einer Webapplikation per STRG-C kopiere und dann in Excel einfügen muss. Der Text ist immer unterschiedlich und das muss ich 2-4Tausend mal machen die nächsten Monate. Daher bin ich daran interessiert, das effizienter mit VBA und Makros zu gestalten aber komme auch mit Makro aufzeichnen nicht zu dem gewünschten Ergebnis.
Also ich schildere euch mal was für ein Text das ist und wie ich das Endformat haben will:

Text:
Es wurden XY bla und XY bla überprüft
Es wurden XY Fehler gefunden
Leerzeile
Text; Text; Text (Zeilen, xmal manchmal 12 manchmal 150 manchmal 1000 Zeilen)

Output: in dem Excelmakrodatei ein Button der das was ich im Zwischenspeicher habe einfügt.
Ab Zeile 4 bis Ende markieren und Text in Spalten konvertieren - Getrennt anhaken --> Weiter, dann Haken nur bei Semikolon setzen --> Fertig klicken.

Dann soll das als Tabelle Formatiert werden aber mit zwei zusätzlichen Spalten aber da ich immer unterschiedliche viele Zeilen habe, weiß ich nicht wie ich das automatisieren soll.

Und dann vor allem möchte ich ganze Zeilen mit die in Spalte C u.a. eine bestimmte textkette haben löschen lassen.
Für jede Hilfe bin ich dankbar. Ich habe mir Tutorials angeschaut aber die behandeln irgendwie alle es auf komische Art und Weise und nicht das Problem mit dem Formatieren der unterschiedlich langen Tabelle sowie des Löschen der Zeilen.

Computer, Microsoft Excel, VBA

Wie erstellt man ein Notenberechnungsprogramm in Excel mit VBA?

Hallo, wir haben von unserem Informatiklehrer folgende Aufgabe bekommen:

Der Lehrer Herr Müller möchte ein kleines Computerprogramm mit VBA in Excel erstellen, um bei der Korrektur der Arbeiten sofort sehen zu können, welche Note die Schüler mit ihrer erreichten Punktzahl bekommen. Dabei geht er folgendermaßen vor. 

Er kann z.B. die erreichte Prozentzahl mit Hilfe der erreichten Punktzahl und der Gesamtpunktzahl berechnen.

Dabei weiß er, dass es  die Note „1“ ab 95 % bis 100 %

                                              die Note „2“ ab 80 % bis   94 %

                                              die Note „3“ ab 60 % bis  79 %

                                              die Note „4“ ab 40 % bis  59 %

                                              die Note „5“ ab 20 % bis  39 %

                                              die Note „6“              bis  19 % gibt.

Da Herr Müller sehr streng ist, entscheidet er sich immer dafür, erst ab der tatsächlich erreichten Mindestprozentzahl (die roten Prozentzahlen) die bessere Note zu geben. Die kleinste, zu verge-bende Punktzahl ist 0,5 Punkte.

Beispiel:             Gesamtpunktzahl = 82

                              erreichte Punktzahl = 32,5 à 39,6 % à Note 5

Anders ausgedrückt ist die notwendige Punktzahl für eine Note „4“ bei 82 Gesamtpunkten:

82 * 0,4 = 32,8 à Da 32,8 mehr ist als 32,5 Punkte, gibt es für 32,5 Punkte die Note „5“

(die Note „4“gibt es erst ab 33 Punkten).

Der Algorithmus sollte so gestaltet sein, dass Herr Müller die Gesamtpunktzahl zu Beginn seiner Korrektur der Arbeiten einmal eingibt und anschließend die minimale Punktzahl „Grenzpunktzahl“ für jede Note ausgegeben wird, so dass er sofort einen Überblick hat, welche Note der für jede erreichte Punktzahl geben kann.

 

Aufgabenstellung:

1.      Beschreibe den Algorithmus zur Berechnung und Anzeige der „Grenzpunktzahlen“ zuerst als Wortmodell. Achte darauf, dass es auch für dritte verständlich ist.

2.      Setze dein Wortmodell in ein Struktogramm um.

3.      Setze das Struktogramm in VBA -Code in der Entwicklerumgebung von Excel um.

Ich würde mich freuen, wenn mir jemande dabei helfen könnte.

Schule, programmieren, VBA, Notenberechnung

Wie kann ich Kontrollkästchen elegant miteinander verknüpfen, um nach mehreren Kriterien zu filtern?

Hallo zusammen,

in einer ExcelDatei befinden sich Formularsteuerlemente bzw. 3 Kontrollkästchen mit denen ich verschiedene Kriterien nach Hunde, Katzen und Vögel filtern sowie verknüpfen möchte.

Mit ActiveX-Steuerelemente Kontrollstästchen und CommandButton konnte ich folgendes Beispiel aufbauen:

Private Sub ausführen_Click()

    If CheckBox1.Value = True And CheckBox2.Value = False And CheckBox3.Value = False Then
        Hund
    ElseIf CheckBox1.Value = False And CheckBox2.Value = True And CheckBox3.Value = False Then
        Katze
    ElseIf CheckBox1.Value = False And CheckBox2.Value = False And CheckBox3.Value = True Then
        Vogel
    ElseIf CheckBox1.Value = True And CheckBox2.Value = True And CheckBox3.Value = False Then
        HundKatze
    ElseIf CheckBox1.Value = False And CheckBox2.Value = True And CheckBox3.Value = True Then
        KatzeVogel
    ElseIf CheckBox1.Value = True And CheckBox2.Value = False And CheckBox3.Value = True Then
        HundVogel
    ElseIf CheckBox1.Value = True And CheckBox2.Value = True And CheckBox3.Value = True Then
        Alle
    Else
        MsgBox ("Es wurde nichts ausgewählt")
    End If

End Sub

Sub Hund()
' Hund Makro
    Worksheets("Tabelle2").Range("$A$4:$B$8").AutoFilter Field:=2, Criteria1:="Hund"
End Sub
Sub Katze()
' Katze Makro
    Worksheets("Tabelle2").Range("$A$4:$B$8").AutoFilter Field:=2, Criteria1:="Katze"
End Sub
Sub Vogel()
' Vogel Makro
    Worksheets("Tabelle2").Range("$A$4:$B$8").AutoFilter Field:=2, Criteria1:="Vogel"
End Sub
Sub Alle()
' Alle Makro
    Worksheets("Tabelle2").Range("$A$4:$B$8").AutoFilter Field:=2
End Sub
Sub HundKatze()
' HundKatze Makro
    ActiveSheet.Range("$A$6:$B$13").AutoFilter Field:=2, Criteria1:="=Hund", _
        Operator:=xlOr, Criteria2:="=Katze"
End Sub
Sub KatzeVogel()
' KatzeVogel Makro
    ActiveSheet.Range("$A$6:$B$13").AutoFilter Field:=2, Criteria1:="=Katze", _
        Operator:=xlOr, Criteria2:="=Vogel"
End Sub
Sub HundVogel()
' HundVogel Makro
    ActiveSheet.Range("$A$6:$B$13").AutoFilter Field:=2, Criteria1:="=Hund", _
        Operator:=xlOr, Criteria2:="=Vogel"
End Sub

Das funktioniert soweit ganz gut.

Allerdings benötige ich Formularsteuerelemente Kontrollkästchen. Die Ergebnisse sollen sich schon während ein Kontrollkästchen betätigt wird aktualisieren. Aktuell läuft das über ActiveX-Steuerelemente Kontrollkästchen und CommandButton.

Gegenüberstellung der Varianten:

Nachgebaute Excel:

Bis auf die G4 funktioniert alles sehr gut. Vielleicht seht ihr den Fehler. Auf eine einfache Formel wie im Funktionstest reagiert die Zelle.

Vielen Dank für eure Hilfe. Liebe Grüße

Bild zum Beitrag
Microsoft Excel, VBA

Excel VBA Laufzeitfehler 13?

Hallo,

wie kann ich den o.g. Fehler lösen?

Was passiert:

Ich hab eine Userform und darin Listboxen

Die Listbox beginnt automatisch bei der Zahl 0

Wenn jedoch nur 1 listbox verändert wird, und die anderen nicht und auf 0 bleiben, dann erscheint der o.g. Fehler

Mein Code:

Private Sub CommandButton1_Click()

Range("C6").Value = Range("C6") - ListBox1.Value

Range("D6").Value = Range("D6") - ListBox2.Value

Range("F6").Value = Range("F6") + ListBox3.Value

Range("G6").Value = Range("G6") + ListBox4.Value

Range("C10").Value = Range("C10") + ListBox1

Range("C11").Value = Range("C11") + ListBox2

Dim n

For n = 0 To ListBox1.ListCount - 1

ListBox1.Selected(n) = True

Next n

Dim m

For m = 0 To ListBox2.ListCount - 1

ListBox2.Selected(m) = True

Next m

Dim b As Long

For b = 0 To ListBox3.ListCount - 1

ListBox3.Selected(b) = True

Next b

Dim c As Long

For c = 0 To ListBox4.ListCount - 1

ListBox4.Selected(c) = True

Next c

End Sub

Private Sub CommandButton2_Click()

Unload Me

End Sub

Private Sub UserForm_Initialize()

'---

With ListBox1

ListBox1.List = Tabelle1.Range("C49:C59").Value

For n = 0 To ListBox1.ListCount - 1

ListBox1.Selected(n) = True

Next n

End With

'----

With ListBox2

ListBox2.List = Tabelle1.Range("C49:C59").Value

For m = 0 To ListBox2.ListCount - 1

ListBox2.Selected(m) = True

Next m

End With

'---

With ListBox3

ListBox3.List = Tabelle1.Range("C49:C59").Value

For b = 0 To ListBox3.ListCount - 1

ListBox3.Selected(b) = True

Next b

End With

'---

With ListBox4

ListBox4.List = Tabelle1.Range("C49:C59").Value

For c = 0 To ListBox4.ListCount - 1

ListBox4.Selected(c) = True

Next c

End With

End Sub

Microsoft Excel, VBA

Meistgelesene Beiträge zum Thema VBA