Office: Range mit Cells kombinieren

Helfe beim Thema Range mit Cells kombinieren in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallöchen zusammen. Ich mache zum allerersten Mal etwas mit Makros und stehe momentan vor einem mir unerklärlichem Problem. Ich möchte mehrere Zellen... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Romplayer, 14. Mai 2014.

  1. Range mit Cells kombinieren


    Hallöchen zusammen.
    Ich mache zum allerersten Mal etwas mit Makros und stehe momentan vor einem mir unerklärlichem Problem.
    Ich möchte mehrere Zellen verbinden. Ich habe über Internetsuche gelernt: Das geht mit Range("A1:A5").Merge. Soweit so gut. Klappt auch.
    Ich muss aber die Zellen mit dem Cells-Befehl definieren, um die Buchstaben in einer Variablen zu umgehen. Weitere Internetsuche ergab: Man kann Range und Cells problemlos kombinieren: Range(Cells(1,1), Cells(5,1)). Wunderbar, auch das funktioniert.
    Wenn ich aber beide Dinge kombinieren wollen, haut mir das Excel auf einmal einen 1004er-Fehler um die Ohren. Und ich begreifs einfach nicht. So sieht mein Code aus: WBZ.Worksheets(1).Range(Cells(1, 5), Cells(1, 7)).Merge
    Was für ein Problem hat die VBA-Logik, das ich noch nicht durchblicke? Tausche ich den Innenteil von Range durch "A5:A7" aus, läuft der Code durch, aber mit den Cells nicht. Warum?

    Und noch eine andere Frage: Wie kann ich aufkommende Dialogfelder unterdrücken bzw automatisch schließen? Im konkreten Fall: Mein Code in Excel-Datei 1 öffnet eine weitere Excel-Datei 2, kopiert deren Inhalt in Datei 1 und schließt Datei 2 nun wieder. Jetzt fragt mich Excel beim Schließen von Datei 2 aber, ob der Inhalt der Zwischenablage (der recht groß ist) beibehalten oder verworfen werden soll. Kann ich diese Abfrage verhindern? Weil das Makro sollte ja automatisch durchlaufen, ohne User-Interaktion.

    :)
     
    Romplayer, 14. Mai 2014
    #1
  2. Hi,

    mit Union kannst Du so ziemlich so ziemlich alle Kombinationen abdecken. Bsp.:
    Code:
    Die Meldungen schaltest Du mit Code:
    aus. Aber nicht vergessen, sie am Ende wieder auf true zu setzen!
     
  3. Hallo Name?,

    ROT: Bezug auf WBZ.Worksheets(1)
    GRÜN Bezug auf ActiveSheet:
    WBZ.Worksheets(1).Range(Cells(1, 5), Cells(1, 7)).Merge
    Einen Bereich über mehrere Blätter oder gar Mappen zu definieren geht nicht. Wenn, müsste WBZ.Worksheets(1) grad das aktive sein (vermutlich nicht der Fall).

    Verbundene Zellen sind Mist.

    Die meisten Dialogfelder lassen sich gezielt vermeiden, indem man entsprechende Vorgaben macht. In Deinem Fall dürfte
    Application.CutCopyMode = False
    reichen.

    Application.DisplayAlerts = False: Empfehle ich dringend zu vermeiden - Ich bin bisher auch nur sehr wenigen Fall begegnet, wo es sinnvoll ist: Z. B. beim Löschen eines Blattes ohne Rückfrage. Dann gehört es aber bereits in der Nachfolgezeile SOFORT wieder eingeschaltet. NIE pauschal über den kompletten Code anwenden!

    Grüße
    EarlFred
     
    EarlFred, 16. Mai 2014
    #3
  4. Range mit Cells kombinieren

    Wunderbar, danke!
    Dass der Innenteil vom Range sich nicht auf das bezieht, was außenherum steht, war das fehlende Logik-Puzzleteil. Das hatte ich ja durchaus bereits vermutet gehabt - aber warum ging es dann, wenn man statt Cells direkt z.b. "A5:A7" eingibt? Das war es, was mich so verwirrt hatte, dass es mit der einen Methode ging, mit der anderen aber nicht. Ich meine, das "A5:A7" hätte er aufs WBZ bezogen, das Cells aber offenbar aufs ActiveSheet. Warum wird es nicht gleich behandelt?

    Wie auch immer: Habe jetzt vor jedes Cells noch ein WBZ.Worksheets(1) hinzugefügt und nun geht es. Auch das Dialogfeld bin ich mit dem CutCopyMode losgeworden. Dankeschön!

    P.S. Warum sind verbundene Zellen Mist? Und was wäre die Alternative für das optische Erscheinungsbild?
     
    Romplayer, 16. Mai 2014
    #4
  5. Hallo ,

    Du kannst eine Range definieren unter Benennung der Adresse oder von Start- und Endzelle.

    Wenn Du schreibst:
    Workbook.Worksheet.Range("A1:X99")
    oder
    Workbook.Worksheet.Range("A1")
    dann bildest Du die Range über Angabe einer Adresse einer Zelle oder eines Zellbereichs.

    Bildest Du hingegen die Range aus
    Range(Startzelle, Endzelle)
    dann sind Start- und Zielzelle jeweils eine eigene Range (Cells ist ein Bereich vom Typ Range!). Und jede Range wiederum muss genau definiert sein über den Bezug zu Workbook.Worksheet.Cells(Zeile, Spalte).
    Lässt man die Angabe von Workbook und Worksheet weg, wird eben jeweils das aktuelle (aktive) genommen. Genau das ist hier passiert.

    Ausnahmen gibt's natürlich auch hier: Die Klassenmodule von Workbook und Worksheets...

    Anstelle nun jedesmal den kompletten Bezug zu schreiben, kann man prima With-Blöcke verwenden:
    Code:
    Der Punkt stellt jeweils die Verbindung zu dem her, was in der With-Zeile steht, setzt diese Zeile also jeweils fort.

    Optische Alternative: z. B. "Über Auswahl zentrieren"

    Grüße
    EarlFred
     
    EarlFred, 16. Mai 2014
    #5
  6. Top! Du erklärst das alles sehr gut und ausführlich, Kompliment!
    Ein paar Begriffe habe ich googeln müssen (z.B. Application.CutCopyMode oder "Über Auswahl zentrieren"), aber das ist ja voll und ganz in Ordnung *Smilie
     
    Romplayer, 16. Mai 2014
    #6
  7. Hallo,

    wenn einer interessiert nachfragt, soll er auch eine Antwort erhalten - aber ich bin ja kein Buch - und selber nachschlagen (a) erhöht den Lerneffekt, (b) bringt Erfolgserlebnisse und (c) zeigt tolle Quellen auf, wo man weiteres Wissen erlangen kann *wink.gif*

    Schön, wenn's geholfen hat!

    Grüße
    EarlFred
     
    EarlFred, 16. Mai 2014
    #7
  8. Range mit Cells kombinieren

    Stimme ich dir voll und ganz zu. Genau das würde ich von einem Fragenden auch erwarten.
    Am Schlimmsten sind die Leute, die offenbar keine Ahnung von irgendwas haben und auch keinerlei Mühe zeigen, sich die Sachen selbst zu erarbeiten. Die bitten dann um irgendwelche Dinge, kriegen sie auch, fragen dann nach der nächsten Änderung etc. Sie übernehmen die Vorschläge ohne sich überhaupt darüber Gedanken gemacht zu haben, was es überhaupt bewirkt. Sie freuen sich dass es läuft, aber warum es das tut ist ihnen egal.

    Richtigerweise sollte es anders laufen: Du erklärst mir so viel wie nötig ist, um es zu verstehen, ansonsten gibst du mir nur ein paar Stichworte/Hinweise, an denen ich weiter anknüpfen kann und sie verwende für weitere eigene Recherchen oder Selbst-Ausprobieren und -Herumspielen.
    Und genau so war es jetzt ja auch. Deshalb kann ich ruhig auch mal ein Lob dazu äußern, freut dich ja sicherlich ebenso *wink.gif*
     
    Romplayer, 16. Mai 2014
    #8
  9. Hallo,

    eine durchweg löbliche Einstellung!

    Ich glaub, die Wette hättest Du gewonnen *wink.gif*

    Schönes Wochenende!

    Grüße
    EarlFred
     
    EarlFred, 16. Mai 2014
    #9
  10. So, ich nochmal *wink.gif*
    Sitze grade an einem Problem, das vermutlich wieder etwas mit dem falschen Arbeitsblatt zu tun hat, aber ich komme nicht drauf, warum.

    Ich möchte eine variable Anzahl an Spalten gruppieren. Im Prinzip so:
    Range(Columns(2), Columns(12)).Select
    Selection.Columns.Group

    Funktioniert in der simplen Variante auch. Die Range-Columns-Verschachtelung dürfte nötig sein, damit ich bei Columns Zahlen (und somit später Variablen) statt Buchstaben angeben kann.

    Nun habe ich folgendes probiert:
    WBZ.Worksheets(1).Range(WBZ.Worksheets(1).Columns(2), WBZ.Worksheets(1).Columns(12)).Select
    WBZ.Worksheets(1).Selection.Columns.Group

    Ist doch an sich der selbe Code, nur mit mehr Referenzen zur Datei, die er nutzen soll. Warum klappt es nicht?
    Habe auch schon verschiedene der Referenzen rausgenommen, kriege trotzdem immer nen Fehler.

    Danke schonmal im Voraus *winken


    Edit: Okay, Select sollte man scheinbar generell vermeiden. Habe jetzt mal testweise ausprobiert was passiert, wenn ich von einschließlich Select bis nachfolgendem Columns alles entferne, und damit gehts. Das ist schön. Aber verstehen tue ich es trotzdem nicht ^^
     
    Romplayer, 18. Mai 2014
    #10
  11. Hallo,

    Korrekt!

    Bei Select / Activate müsstest Du erst das Workbook, dann das Worksheet und dann die Range auswählen. Ein direkter "Sprung" von "irgendwo" nach "dorthin" ist damit nicht möglich.

    Wenn Du das dennoch mal benötigen würdest (z. B. um den Anwender auf eine fehlende Eingabe hinzuweisen und gleich zur betreffenden Zelle zu springen), dann nimm Application.Goto:
    Code:
    Aber wie gesagt: Das Auswählen von Bereichen um irgendwas damit zu tun, ist zu 99,999% nicht nötig.

    Grüße
    EarlFred
     
    EarlFred, 19. Mai 2014
    #11
Thema:

Range mit Cells kombinieren

Die Seite wird geladen...
  1. Range mit Cells kombinieren - Similar Threads - Range Cells kombinieren

  2. Laufzeitfehler '1004' bei Verwendung von Range mit Cells

    in Microsoft Excel Hilfe
    Laufzeitfehler '1004' bei Verwendung von Range mit Cells: Hi zusammen, ich beiße mir gerade die Zähne an folgenden Code aus: Worksheets("Zinsderivate").Select Dim MWZinsZelle As Range Dim MWZins As String MWZins = "Marktwert Bank" Set MWZinsZelle =...
  3. Range über cells definieren

    in Microsoft Excel Hilfe
    Range über cells definieren: Hallo Leute, ich hätte da mal eine kurze Frage: Wie kann ich eine Range die sich über mehrere Bereiche erstreckt über cells(,) ansprechen? Bsp.: Range("D4:E28,G4:H28,J4:K28,M4:N28").Select...
  4. range(cells...) funktioniert icht

    in Microsoft Excel Hilfe
    range(cells...) funktioniert icht: Hi. bei folgender Stelle kommt Fehlermeldung Laufzeitfehler 1004, Andwendungs oder Objektdefinierter Fehler Code: Workbooks(Datei2).Worksheets(aktMonat).Range(Cells(letzteZeile - 7, 1),...
  5. Range mit Cells Laufzeitfehler

    in Microsoft Excel Hilfe
    Range mit Cells Laufzeitfehler: Hallo ich habe ein Problem bei folgendem Code. Code: v = 1 Do Until ActiveSheet.Range(Cells(1, v)).Value = "Name" u = v + 1 v = u Loop x = v Do Until Range(Cells(1, x)).Value = "Check-out" w...
  6. Komplette Spalte per Variable mit Cells/Range

    in Microsoft Excel Hilfe
    Komplette Spalte per Variable mit Cells/Range: Hallo liebe Leute! Ich stehe gerade auf dem Schlauch, wenn ich nach den untenstehenden Mustern eine komplette Spalte mit Variablen ansprechen will. Eine Zelle ansprechen, NoPro:...
  7. Excel bubble charts: data labels verschwinden trotz Definition einer Cell Range

    in Microsoft Excel Hilfe
    Excel bubble charts: data labels verschwinden trotz Definition einer Cell Range: Hallo zusammen, ich habe mehrere Bubble Charts mit >20 Datenpunkten (Bubbles) erstellt, dessen Werte und damit Lage im Graphen sich in Abhängigkeit von diversen Dropdowns ändern. Die Bubble...
  8. Excel- VBA Range oder Cells?

    in Microsoft Excel Hilfe
    Excel- VBA Range oder Cells?: Hallo, ich möchte aus zwei Zeilen, jeweils Datum, in einer dritten Zeile den Unterschied in Tagen ausrechnen. Soll ich Cells oder eher Range benutzen? Und wie genau stelle ich das an, wenn ich...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden