Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1132to1136
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zeilen über Inputbox einfügen (variabel) | Herbers Excel-Forum

Zeilen über Inputbox einfügen (variabel)
24.01.2010 14:47:22
Ewald Sadowski

Hallo
habe ein Makro um Zeilen über Inputboxen einfügen zu können.
Zuerst wird abgefragt, ab wo eingefügt werden soll, und dann wieviel Zeilen eingefügt werden sollen.
Das Makro läuft durch, es kommt keine Fehlermeldung aber es passiert auch nichts.
Was ist da falsch??
Makro:


Sub Makro3()
' Makro3 Makro
' Tastenkombination: Strg+z
Dim intAnz As Integer
Worksheets("Tabelle1").Select
Dim myRange As Range
On Error Resume Next
Set myRange = Application.InputBox(Prompt:="Bitte wählen Sie die Zeile ab wo eingefügt wird" _
_
_
, _
Title:="Zeilenauswahl", Type:=8)
intAnz = Application.InputBox _
("Wieviel Zeilen sollen eingefügt werden?", Title:="Zeilenanzahl")
Rows(myRange + intAnz).Select
Selection.Insert Shift:=xlDown
Range(myRange).Select
Selection.AutoFill Destination:= _
Range(myRange + intAnz), Type:=xlFillDefault
End Sub

Gruß Ewald

31
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen über Inputbox einfügen (variabel)
24.01.2010 15:13:19
Hajo_Zi
Hallo Ewald,
versuche es so
Option Explicit
Sub Makro3()
' Makro3 Makro
' Tastenkombination: Strg+z
Dim intAnz As Long
Dim myRange As Range
Worksheets("Tabelle1").Select
On Error Resume Next
Set myRange = Application.InputBox(Prompt:="Bitte wählen Sie die Zeile ab wo eingefügt  _
wird", _
Title:="Zeilenauswahl", Type:=8)
intAnz = Application.InputBox _
("Wieviel Zeilen sollen eingefügt werden?", Title:="Zeilenanzahl")
Rows(myRange.Rows + intAnz).Insert Shift:=xlDown
Range(myRange.Address).AutoFill Destination:= _
Range(myRange + intAnz), Type:=xlFillDefault
On Error GoTo 0
End Sub


Anzeige
AW: ON ERROR RESUME NEXT
24.01.2010 15:19:00
Daniel
Hi
die Fehlermeldung bleibt aus, weil du sie unterdrückst!
das ON ERROR RESUME NEXT sorgt dafür, daß das Makro bei einem Fehler einfach mit dem nächsten Befehl weiter macht, unabhängig davon, ob das sinnvoll ist oder nicht.
nimm das erstmal raus und arbeite dich durch die Fehler durch, vielleicht wird dir dann klarer, wie das Makro funktionieren muss, weil da geht schon so einiges durcheinander.
Gruß, Daniel
AW: ON ERROR RESUME NEXT
24.01.2010 15:47:49
Ewald Sadowski
Hallo Hajo, Daniel,
habe deinen Code mal probiert, funktioniert aber leider auch nicht.
habe dann die Fehlerünterdrückung rausgenömmen (von Daniel)
und bekomme bei diesen zwei Zeilen Laufzeitfehler
'Rows(myRange.Rows + intAnz).Insert Shift:=xlDown
Range(myRange.Address).AutoFill Destination:=Range(myRange + intAnz), Type:=xlFillDefault
und zwar Laufzeitfehler 13 Typen unverträglich
komme aber nicht drauf, was da falsch ist
Anzeige
AW: ON ERROR RESUME NEXT
24.01.2010 16:16:13
Hajo_Zi
Hallo Ewald,
Rows(myRange.Rows + intAnz).Insert Shift:=xlDown
Range(myRange.Address).AutoFill Destination:=Range(myRange.rows + intAnz), Type:=xlFillDefault
Gruß Hajo
AW: Hajo, teste doch mal
24.01.2010 16:29:04
Daniel
deine Vorschläge, bevor du sie hier hochlädst.
das was du da vorschlägst macht doch keinen Sinn und ist deiner eigentlich nicht würdig.
Gruß, Daniel
...so...?! ;-) owT
24.01.2010 16:40:10
Luc:-?
:-?
AW: ...so...?! ;-) owT
24.01.2010 17:08:01
Daniel
Rangeobjekt + IntegerVariable = Unsinn
oder irre ich da ?
Nee, du NICHT! Das...
24.01.2010 17:11:59
Luc:-?
...So bezog sich auf was Anderes... ;-)
Gruß Luc :-?
Anzeige
AW: uff, ich dachte schon...
24.01.2010 18:11:17
Daniel
AW: ON ERROR RESUME NEXT
24.01.2010 16:20:43
Daniel
Hi
probier das Makro mal so:
Sub Makro3()
' Makro3 Makro
' Tastenkombination: Strg+z
Dim intAnz As Integer
Worksheets("F").Select
Dim myRange As Range
On Error Resume Next
Set myRange = Application.InputBox( _
Prompt:="Bitte wählen Sie die Zeile ab wo eingefügt wird", _
Title:="Zeilenauswahl", _
Type:=8)
On Error GoTo 0
If Not myRange Is Nothing Then
intAnz = Application.InputBox( _
Prompt:="Wieviel Zeilen sollen eingefügt werden?", _
Title:="Zeilenanzahl", _
Type:=1)
If intAnz > 0 Then
Rows(myRange.Row + 1).Resize(intAnz).Insert Shift:=xlDown
Rows(myRange.Row).AutoFill Destination:=Rows(myRange).Resize(intAnz + 1), _
Type:=xlFillDefault
End If
End If
End Sub
die Zeilen werden unter der Markierten Zeile eingefügt und nach unten ausgefüllt.
Fehler sollten eigentlich nicht mehr passieren, da diese durch die Typfestlegung in der Inputbox abgefangen werden.
Hier siehst du auch , wie man On Error Resume Next sinnvoll einsetzen kann, denn an dieser Stelle würde der Code einen Fehler bringen, wenn der Anwender auf abbrechen klickt.
trotzdem muss dieser Fall durch eine geeignete IF-Abfrage abefangen werden.
Ebenso bei der 2. Input-box.
Hier gibt es allerdings keinen Fehler, wenn abgebrochen wird.
der 2. Teil des Makros sollte dann nur ausgeführt werden, wenn alle Eingaben korrekt gemacht wurden.
Somit ist On Error Resume Next hier nicht notwendig.
Gruß, Daniel
Anzeige
AW: ON ERROR RESUME NEXT
24.01.2010 21:29:52
Ewald Sadowski
Hallo Daniel
erstmal ein Danke für deine Hilfe
habe deinen Code jetzt mal getestet das funktioniert auch soweit.
Nur etwas ist seltsam. Beim ersten Mal lief alles durch, keine Fehlermeldung, Zeilen werden eingefügt.
Bei weiteren Versuchen werden zwar auch die Zeilen eingefügt aber ich bekomme eine Fehlermeldung
Laufzeitfehler 1004 "Die Autofill-Methode des Range-Objektes konnte nicht ausgeführt werden"
und markiert ist:
Rows(myRange.Row).AutoFill Destination:=Rows(myRange).Resize(intAnz + 1), _
Type:=xlFillDefault
Konnte aber keinen Fehler finden.
Gruß Ewald
Anzeige
AW: ON ERROR RESUME NEXT
24.01.2010 23:15:40
Daniel
Hi
ok hab was vergessen.
änder die Zeile mal so ab:
Rows(myRange.Row).AutoFill Destination:=Rows(myRange.Row).Resize(intAnz + 1), _
Type:=xlFillDefault
Gruß, Daniel
AW: ON ERROR RESUME NEXT
25.01.2010 18:41:16
Ewald Sadowski
Hallo Daniel
das funktioniert jetzt, doch bekomme ich keine leeren Zeilen, sondern es wird der Wert um 1 erhöht
Beispiel: Wenn in A10 der Wert 5 steht, und füge ab da zwei Zeilen ein, so haben die Zellen dann den Wert 6/7.
Das sollte eigentlich nicht sein.
Gruß Ewald
AW: Wenn du leere Zeilen willst
26.01.2010 00:32:00
Daniel
warum hast du dann die Zeile mit dem Filldown reingenommen?
die ist ein deinem Makro doch drinnen, daher bin ich davon ausgegangen, daß du das so haben willst.
wenns dich stört, lösch die Zeile mit dem Filldown wieder raus.
Gruß, Daniel
Anzeige
Das kommt, wenn man irgendwelche...
26.01.2010 00:56:36
Luc:-?
...irgendwie sinnvoll erscheinenden Makros ohne sie wirklich zu verstehen einfach übernimmt und sie dann womöglich durch eigene, ahnungslose Zutaten noch verschlimmbessert. Das ist ungefähr so, als ob ich die Straße fegen will, habe aber keinen Besen, sondern zufällig gerade 'ne Harke bei der Hand...
Da kann ein echter Profi eigentlich nur noch den Kopf schütteln. Jemand, der so etwas tut, muss (in seiner Firma) erst mal ordentlich Schaden angerichtet haben bis er einsieht, dass es so nicht gehen kann. Bis es soweit ist, darf er weiter Forumshelfer zu verwirren oder gar zu verärgern suchen...
Ist das nicht auch deine Meinung zu diesem Thread, Daniel... ;-)
Mancher scheint wirklich gern auf 'nem Vulkan zu tanzen...
Gruß Luc :-?
Anzeige
Forumshelfer nur "... echter Profi ..."
26.01.2010 10:20:52
Tino
Hallo Luc,
wer darf den demnach noch ein Forumshelfer sein, nur ein "... echter Profi ..."?
Mist dann muss ich mich ja auch abmelden und viele andere auch ;-).
Dann wird es aber dünn hier!
Gruß Tino
AW: Forumshelfer nur "... echter Profi ..."
26.01.2010 10:25:58
Hajo_Zi
Hallo Tino,
da muss sich Luc dann aber auch abmelden. Ich habe erst vor kurzem ein Makro von ihm gesehen wo Zeilen gelscht wurden. Der User der sich mit Programmen auskennt , kennt den Sachverhalt das man dies am leichtesten von hinten nach vorne macht um keine Zeilen zu überspringen, nur Luc nicht.
Gruß Hajo
Anzeige
;-) oT.
26.01.2010 10:33:45
Tino
Schön, dass du auch mal was selber weißt,...
26.01.2010 11:00:14
Luc:-?
...Hajo,
ich löse Probleme, wenn ich sie selber habe, auch selber. Außerdem ist's schietegal wie herum, Hptsache ist doch das es fkt. Ich hatte da nicht vor, all zuviel Mühe zu investieren, noch dazu von einem Linux-PC aus. Dein wenig profihafter Ausrutscher neulich mit der Addition von Zahlen auf ein Objekt war ja nun wahrlich auch kein Ruhmesblatt... :->
Außerdem biete ich keine halbfertigen und unausgegorenen Codes an wie du bspw mit dem alten Versuch von bst zur Ermittlung der aktuellen (bedingten) Formatierung (mitsamt aller Testkommentare!)... Bernd würde das höchstwahrscheinlich nicht tun!
Außerdem habe ich nie behauptet, ein „echter“ Profi zu sein. Von denen hört man nämlich solche Sprüche wie man sollte nicht alles machen, was möglich ist (O-Ton eines Systemprogrammierers und interessanterweise auch unseres Fahrradhändlers und -reparateurs!)... ;-)
Wenn das auch ein Profikennzeichen ist, bin nicht nur ich keiner, sondern viele Helfer und einige, von denen es keiner vermutet, sind dann viell die wahren Profis... ;-)
Gruß Luc :-?
Anzeige
Ach Gott, dass ist ja sogar der bewusste Thread!
26.01.2010 13:05:16
Luc:-?
Na, Hallelujah, ganz schön mutig! Respekt, Hajo,
soviel „Kühnheit“ hatte ich dir gar nicht zugetraut... :->
Luc :-?
AW: ich gehe eigentlich davon aus, daß hier im
26.01.2010 21:39:41
Daniel
Forum überhaupt kein echter Profi aktiv ist.
Denn warum sollte er anderen Menschen kostenlos was überlassen, womit er sonst tagtäglich sein Geld verdient?
Tagsüber für xxx Euro Excelkurse geben und abends dann umsont das Wissen raushauen, macht irgendwie keinen Sinn.
Gruß, Daniel
AW: ich gehe eigentlich davon aus, daß hier im
27.01.2010 07:18:16
Hajo_Zi
Hallo Daniel,
in diesem Forum mag das zutreffen. Aber in einem anderem Forum kenne ich jemanden der mit Schulungen sein Geld verdient und Sie Antwortet auch. Also würde ich das nicht so Grundsätzlich sehen.
Gruß Hajo
Wieso Helfer? Das bezog sich doch eindeutig...
26.01.2010 11:04:38
Luc:-?
...auf den irgendwelchen Code sammelnden und adaptierenden Fragesteller, Tino...???!
Gruß Luc :-?
ich hab das so in den Hals bekommen.
26.01.2010 11:36:12
Tino
Hallo,
das jeder der einen Code kopiert der nicht sein eigen ist,
wie ich heute einen von Erich G. nicht teilnehmen dürfte, eben nur die "echten Profis".
Gruß Tino
Du wirst doch wohl wissen, was du kopierst,...
26.01.2010 12:33:28
Luc:-?
...was das macht und ob das auf das jeweilige Problem passt, Tino,
also 'n Besen ist und keine Harke... ;-)
Also musstest du dich nicht angesprochen fühlen. Wie oft liest man hier und anderswo aber... Ich habe den-und-den Code im Web/Forum „gefunden“, habe den anzupassen versucht und bin gescheitert... Profi-Pgmierer schütteln da wohl wirklich den Kopf! Schön, wenn wenigstens kein Schaden entstanden ist → 3x darfst du raten, warum WF so ein VBA-Gegner ist... ;-)
Übrigens hat Hajo, den Sachverhalt verkürzt und z.T. sogar falsch dargestellt wie du gern hier nachlesen kannst, wenn du das nicht kennen solltest...
Gruß Luc :-?
AW: Wenn du leere Zeilen willst
26.01.2010 12:09:34
Ewald Sadowski
Hallo Daniel
habe jetzt die Zeile auskommentiert und dann geht es.
Was ich nur nicht verstehe, in dem ersten Makro mit der festen Zeilenvorgabe ist die Autofill-Anweisung auch drin, doch da werden die Werte nicht eingetragen.
Nochmal Danke für deine Hilfe
Gruß Ewald
PS. Entschuldigung! Eigentlich hatte ich nur um Hilfe gebeten, wollte keine Diskussion über die Helfer entfachen, Es scheint einer benutzt das Forum hier als Egopflege und will gar nicht helfen.
Nichts verstanden? Dann nochmal...
26.01.2010 13:13:07
Luc:-?
...Es kann sehr gefährlich wdn, einen Pgmcode zu verwenden, den man nicht versteht. Das Risiko wäre mir zu hoch. Wenn deiner Firma dadurch Schaden entsteht, wird sie dich regresspflichtig machen! Also stets nur das anwenden, was du auch verstehst! Man kann es sich hier ja auch erklären lassen. Die meisten Helfer tuen das, wenn man sie darum bittet und die Selbsteinschätzung (Level) nicht zu hoch angesetzt war.
Luc :-?
AW: Wenn du leere Zeilen willst
26.01.2010 21:46:17
Daniel
Hi
das erste Makro kenne ich nicht und die Autofill-Funktion verwende ich normalerweise auch nicht, da ich es nicht Excel überlassen will, ob ich jetzt Werte kopiere oder Reihen fortsetze.
Das entscheidet Excel hand der Daten, die in dem Benannten Zellbereich bereits vorhanden sind.
Allerdings ist mir die Logik dahinter nicht ganz klar, deswegen verwende ich diese Funktion nicht.
Gruß, Daniel
Was soll das denn bringen,...
24.01.2010 15:44:08
Luc:-?
...Ewald,...
Du verwendest ja offensichtlich die InputBox-Methode. Da kann man das so machen. Aber gibt der Nutzer das dann auch so ein wie erforderlich? Im VBE-Hilfe-Bsp wird ein Bereichsname verwendet, aber der Nutzer wird hier doch wohl eher nur eine (Zeilen-)Nr eintragen! Ich weiß nicht, ob das dann reicht, um ein Range-Objekt zu setzen. Mit einer 2.InputBox(-Methode) fragst du dann höchst nutzerunfreundlich noch die Zeilenanzahl ab. Dabei hast du wohl übersehen, dass in der Hilfe steht, ohne Type gibt die Methode Text zurück. Ich weiß ja nicht, ob hier die automatische Umwandlung in einen Integer-Wert (Long wäre sinnvoller!) fktt. Wenn das aber doch alles fktn sollte, kommt der „dicke Hund“ anschließend. Da wird erst eine Zeile „ausgewählt“, deren Nummer sich aus der Addition eines Objekts (!) und einer Zahl ergeben soll! Dann wird die Einfügezeile ausgewählt (vorausgesetzt Set hat geklappt!) und soll auf den angeblichen Einfügebereich, der ebenfalls durch Addition von Objekt und Zahl bestimmt wdn soll, übertragen wdn...! So steht das nicht in den VBE-Hilfe-Bspp! Falls das aber wider Erwarten doch fktn sollte, siehst du evtl deshalb nichts, weil du eine leere Zeile auf leere Zeilen überträgst...!?
Übrigens kann keine Fehlermeldung kommen, denn du hast am Anfang On Error Resume Next geschrieben. Das unterdrückt sie. So etwas ist meist nur bei udFktt sinnvoll. Bei Subroutinen sollte man dann schon eher eine ordentliche Fehlerbehandlung pgmieren (On Error GoTo...). Und die PgmSyntax scheint formal i.O. zu sein, so dass sich auch der Compiler nicht meldet...
Gruß Luc :-?
AW: Was soll das denn bringen,...
24.01.2010 15:59:57
Ewald Sadowski
Hallo Luc
mein Makro ist von diesem Makro abgeleitet:
Sub Makro1()
' Makro1 Makro
' Tastenkombination: Strg+
Dim intAnz As Integer
Worksheets("Tabelle1").Select
intAnz = Application.InputBox _
("Wieviel Zeilen sollen eingefügt werden?")
Rows("11:" & 10 + intAnz).Select
Selection.Insert Shift:=xlDown
Range("D10").Select
Selection.AutoFill Destination:= _
Range("D10 : D" & 10 + intAnz), Type:=xlFillDefault
End Sub
Dieses Makro funktioniert, doch leider ist hier ab wo die Zeilen eingefügt werden sollen festvorgegeben.
Dies will ich aber variabel haben, um die Zeilen nicht immer an der gleichen Stelle einzufügen.
Gruß Ewald
Das sieht ja auch ganz anders aus!
24.01.2010 16:39:02
Luc:-?
Beachte meine Hinweise, Ewald,
von wg der Addition! Inzwischen hast du ja die entsprechd Fehlermeldungen erhalten, so, wie ich es erwartet habe...!
Gruß Luc :-?

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige