Microsoft Excel

Herbers Excel/VBA-Archiv

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

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


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

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

  

Betrifft: AW: Zeilen über Inputbox einfügen (variabel) von: Hajo_Zi
Geschrieben am: 24.01.2010 15:13:19

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

GrußformelHomepage


  

Betrifft: AW: ON ERROR RESUME NEXT von: Daniel
Geschrieben am: 24.01.2010 15:19:00

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


  

Betrifft: AW: ON ERROR RESUME NEXT von: Ewald Sadowski
Geschrieben am: 24.01.2010 15:47:49

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


  

Betrifft: AW: ON ERROR RESUME NEXT von: Hajo_Zi
Geschrieben am: 24.01.2010 16:16:13

Hallo Ewald,

Rows(myRange.Rows + intAnz).Insert Shift:=xlDown
Range(myRange.Address).AutoFill Destination:=Range(myRange.rows + intAnz), Type:=xlFillDefault

Gruß Hajo


  

Betrifft: AW: Hajo, teste doch mal von: Daniel
Geschrieben am: 24.01.2010 16:29:04

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


  

Betrifft: ...so...?! ;-) owT von: Luc:-?
Geschrieben am: 24.01.2010 16:40:10

:-?


  

Betrifft: AW: ...so...?! ;-) owT von: Daniel
Geschrieben am: 24.01.2010 17:08:01

Rangeobjekt + IntegerVariable = Unsinn

oder irre ich da ?


  

Betrifft: Nee, du NICHT! Das... von: Luc:-?
Geschrieben am: 24.01.2010 17:11:59

...So bezog sich auf was Anderes... ;-)
Gruß Luc :-?


  

Betrifft: AW: uff, ich dachte schon... von: Daniel
Geschrieben am: 24.01.2010 18:11:17




  

Betrifft: AW: ON ERROR RESUME NEXT von: Daniel
Geschrieben am: 24.01.2010 16:20:43

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


  

Betrifft: AW: ON ERROR RESUME NEXT von: Ewald Sadowski
Geschrieben am: 24.01.2010 21:29:52

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


  

Betrifft: AW: ON ERROR RESUME NEXT von: Daniel
Geschrieben am: 24.01.2010 23:15:40

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


  

Betrifft: AW: ON ERROR RESUME NEXT von: Ewald Sadowski
Geschrieben am: 25.01.2010 18:41:16

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


  

Betrifft: AW: Wenn du leere Zeilen willst von: Daniel
Geschrieben am: 26.01.2010 00:32:00

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


  

Betrifft: Das kommt, wenn man irgendwelche... von: Luc:-?
Geschrieben am: 26.01.2010 00:56:36

...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 :-?


  

Betrifft: Forumshelfer nur "... echter Profi ..." von: Tino
Geschrieben am: 26.01.2010 10:20:52

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


  

Betrifft: AW: Forumshelfer nur "... echter Profi ..." von: Hajo_Zi
Geschrieben am: 26.01.2010 10:25:58

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


  

Betrifft: ;-) oT. von: Tino
Geschrieben am: 26.01.2010 10:33:45




  

Betrifft: Schön, dass du auch mal was selber weißt,... von: Luc:-?
Geschrieben am: 26.01.2010 11:00:14

...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 :-?


  

Betrifft: Ach Gott, dass ist ja sogar der bewusste Thread! von: Luc:-?
Geschrieben am: 26.01.2010 13:05:16

Na, Hallelujah, ganz schön mutig! Respekt, Hajo,
soviel „Kühnheit“ hatte ich dir gar nicht zugetraut... :->
Luc :-?


  

Betrifft: AW: ich gehe eigentlich davon aus, daß hier im von: Daniel
Geschrieben am: 26.01.2010 21:39:41

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


  

Betrifft: AW: ich gehe eigentlich davon aus, daß hier im von: Hajo_Zi
Geschrieben am: 27.01.2010 07:18:16

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


  

Betrifft: Wieso Helfer? Das bezog sich doch eindeutig... von: Luc:-?
Geschrieben am: 26.01.2010 11:04:38

...auf den irgendwelchen Code sammelnden und adaptierenden Fragesteller, Tino...???!
Gruß Luc :-?


  

Betrifft: ich hab das so in den Hals bekommen. von: Tino
Geschrieben am: 26.01.2010 11:36:12

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


  

Betrifft: Du wirst doch wohl wissen, was du kopierst,... von: Luc:-?
Geschrieben am: 26.01.2010 12:33:28

...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 :-?


  

Betrifft: AW: Wenn du leere Zeilen willst von: Ewald Sadowski
Geschrieben am: 26.01.2010 12:09:34

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.


  

Betrifft: Nichts verstanden? Dann nochmal... von: Luc:-?
Geschrieben am: 26.01.2010 13:13:07

...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 :-?


  

Betrifft: AW: Wenn du leere Zeilen willst von: Daniel
Geschrieben am: 26.01.2010 21:46:17

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


  

Betrifft: Was soll das denn bringen,... von: Luc:-?
Geschrieben am: 24.01.2010 15:44:08

...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 :-?


  

Betrifft: AW: Was soll das denn bringen,... von: Ewald Sadowski
Geschrieben am: 24.01.2010 15:59:57

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


  

Betrifft: Das sieht ja auch ganz anders aus! von: Luc:-?
Geschrieben am: 24.01.2010 16:39:02

Beachte meine Hinweise, Ewald,
von wg der Addition! Inzwischen hast du ja die entsprechd Fehlermeldungen erhalten, so, wie ich es erwartet habe...!
Gruß Luc :-?


Beiträge aus den Excel-Beispielen zum Thema "Zeilen über Inputbox einfügen (variabel)"