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.

Daten Übertragung mit Dialogfenster und Abfrage
Hi Uwe,

bei mir geht es auch um meine Variante mit Names und nicht die mit PrintArea. Ich versuche ja immer zu vermitteln, das man mit Aufzeichnen auch einiges lösen kann, was in dem Fall eben nicht passt.

Hi Stefan,

in der Beispieldatei gibt es doch nur ein Blatt, oder hab ich da einen Upload mit mehreren übersehen? Als Vorlage fasse ich die Teile / Druck-"Seiten" des Blattes auf, die nur in Spalte A vorgefüllt sind. Für ein anderes aktives Blatt müsste dann eine andere Datei offen sein.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
Hallo André,

(18.06.2020, 08:27)schauan schrieb: in der Beispieldatei gibt es doch nur ein Blatt, oder hab ich da einen Upload mit mehreren übersehen?

Wenn man den Code vom TE anschaut, würde ich das verneinen (ich habe einige Zeilen gelöscht, die für das Verständnis nicht entscheidend sind)

Code:
Private Sub CommandButton1_Click()
'Variablendeklarationen - Integer (%)
Dim icnt1%
Dim sheet As Worksheet

'Zieldate oeffnen
Workbooks.Open Filename:="Pfad"
'Qelldatei wieder aktivieren
Windows("Tabelle1.xlsm").Activate

  'Mit dem Zielblatt
  With Workbooks("Tabelle1").Sheets("Test1")
    'mit der ersten lleren Zelle (anhand Spalte 7)
    With .Cells(.Cells(.Rows.Count, 7).End(xlUp).Row + 1, 7)
      'Eintraege der Listbox uebernehmen, Spalten 4 bis 7 - Zaehlung beginnt bei 0!
      .Value = ListBox1.List(icnt1, 0)
      .Offset(, 1) = ListBox1.List(icnt1, 1) '2
      .Offset(, 4) = ListBox1.List(icnt1, 2) '3
     
'mit diesen Code Abschnitt wird der Label bzw. Labels gef?llt
      Set sheet = ActiveWorkbook.Sheets("Label")
      'label zellen
      sheet.Cells(Rowmultier + 1, multiplier) = ListBox1.List(icnt1, 12)
      sheet.Cells(Rowmultier + 2, multiplier) = ListBox1.List(icnt1, 1)
    'Ende mit der ersten lleren Zelle (anhand Spalte 6)
    End With
  'Ende Mit dem Zielblatt
  End With
'Ende Wenn Zeileneintrag gewaelt wurde, dann
End If
Next
Unload Me
      Call DruckBereich
      Tabelle1.PrintPreview
      Dim labelrange As Range
      Set labelrange = sheet.Range("B1:D1000,G1:I100")
      labelrange.ClearContents
'Zieldatei aktivieren
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Windows("Tabelle1").Activate
End Sub

er öffnet eine Datei, aktiviert wieder die Makrodatei, und da sind es für mich zwei Tabellenblätter.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
Hallo Zusammen,

ja die Labels befinden sich in der andere Tabelle aber in derselben Excel Datei.
Bsp. Datei war nur um zu verstehen wie die Label vorlagen aufgabt sind.
Antworten Top
Hi André,

(18.06.2020, 08:27)schauan schrieb: bei mir geht es auch um meine Variante mit Names und nicht die mit PrintArea. Ich versuche ja immer zu vermitteln, das man mit Aufzeichnen auch einiges lösen kann, was in dem Fall eben nicht passt.

ich hoffte, dass Du selber erkennst, wie gruselig Deine Variante ist. Wink
Druckbereiche sind nämlich lokale Namen. Sie beginnen also mit dem Blattnamen und anschließendem Ausrufezeichen. Enthält der Blattname aber z.B. Leerzeichen, kommen noch Hochkommas drumherum. Und dann kommt erst der eigentliche lokalisierte Name.  Blush

Wenn ich das Festlegen des Druckbereiches aufzeichne, wie Du es ja in #86 empfiehlst, erhalte ich so etwas:
ActiveSheet.PageSetup.PrintArea = "$B$2:$C$3"
Da ist der sich dahinter verbergende Name unwichtig. Wink

Gruß Uwe
Antworten Top
Hi Uwe,

das sind eben noch die alten Hackerfinger. Zwei Wege gibt's. Ich kann Druckbereich eben als Bereichsnamen eingeben und der ist dann auch nicht nur ein so benannter Bereich sondern ein Druckbereich, oder ich gehe oben über den Reiter ... Nur der eine Weg zeichnet einen im ersten Moment unbrauchbaren code auf, der mit Anpassung aber auch lauffähig ist.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
HiAndré,

(18.06.2020, 12:08)schauan schrieb: Nur der eine Weg zeichnet einen im ersten Moment unbrauchbaren code auf, der mit Anpassung aber auch lauffähig ist.

dann zeige doch bitte die richtige Anpassung.  Blush
Du hattest beim Aufzeichnen schon einen gravierenden Fehler gemacht! Wink

Gruß Uwe
Antworten Top
Hallöchen,

hier mal ein code, der in allen Blättern prüft, ob in Spalte B mehr steht als nur bis Zeile 1. Wenn ja, wird das Blatt in eine Liste genommen, der Druckbereich für dieses Blatt festgelegt und am Ende die betroffenen Blätter selektiert. Wenn man dann in die Seitenvorschau geht und daraus druckt, sollten auch nur die betroffenen / selektierten Blätter gedruckt werden. Ob die Daten korrekt in den Blättern stehen hab ich allerdings immer noch nicht angeschaut. Sad

Wenn die Labeltabelle eines Blattes komplett gedruckt werden soll, ohne Einstellung des Druckbereichs für dieses Blatt auf die gefüllten Daten, kann man die Codezeile auch auskommentieren bzw. löschen, siehe code unter "Druckbereich auf Blatt festlegen"

Wenn noch andere Blätter in der Datei sind außer "Label ...", kann man noch eine Prüfung hinzufügen, die nur Blätter mit Label am Anfang berücksichtigt.

Uwe, siehe #103 Smile

Code:
Sub BlaetterZumDrucken()
'Variablendeklarationen
Dim arrTemp, blaetter As Worksheet, iCnt%
'Array dimensionieren
ReDim arrTemp(Sheets.Count)
'Zaehler festlegen
iCnt = -1
'Schleife ueber alle Blaetter
For Each blaetter In Worksheets
  'Mit einem Blatt
  With blaetter
    'Druckbereich auf dem Blatt festlegen
    'Wenn gefullter Bereich in SPalte B min. bis Zeile 2 geht, denn
    If .Cells(Rows.Count, 2).End(xlUp).Row > 1 Then
      'Blattzaehler hochsetzen
      iCnt = iCnt + 1
      'Blattname in Array uebernehmen
      arrTemp(iCnt) = .Name
      'Druckbereich auf Blatt festlegen
      .PageSetup.PrintArea = "='" & .Name & "'!" & .Range("A1:I" & .Cells(Rows.Count, 2).End(xlUp).Row).Address
    'Ende Wenn gefullter Bereich in SPalte B min. bis Zeile 2 geht, denn
    End If
  'Ende Mit einem Blatt
  End With
'Ende Schleife ueber alle Blaetter
Next
'Wenn min ein Blatt betroffen ist, dann
If iCnt >= 0 Then
'Array auf Anzahl betroffener Blaetter reduzieren
ReDim Preserve arrTemp(iCnt)
'Blattliste Selectieren
Sheets(arrTemp).Select
'Ende Wenn min ein Blatt betroffen ist, dann
End If
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Pirat2015
Antworten Top
Gibt es hier eine Endlosschleife ?  Huh
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
Hi André,

(18.06.2020, 15:21)schauan schrieb: Uwe, siehe #103 Smile

der ist falsch, auch mit Stefans Korrektur/Ergänzung.  Undecided

Gruß Uwe
Antworten Top


Gehe zu:


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