Informationen und Beispiele zum Thema InputBox | |
---|---|
![]() |
InputBox-Seite mit Beispielarbeitsmappe aufrufen |
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
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
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 Subdie Zeilen werden unter der Markierten Zeile eingefügt und nach unten ausgefüllt.
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 SubDieses Makro funktioniert, doch leider ist hier ab wo die Zeilen eingefügt werden sollen festvorgegeben.
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 :-?