Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1524to1528
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

Bereich / Zelle aus Inputbox weiter verarbeiten

Bereich / Zelle aus Inputbox weiter verarbeiten
29.11.2016 15:05:52
Peter
Hallo zusammen,
ich muss Zahlen aus einer DB in einen Text umwandeln, da ich führende Nullen benötige die immer 7 Stellen haben Nun habe ich mir ein Makro gebastelt, welches auch tut was es soll. Allerdings NUR solange die Werte ab A2 stehen. Meine Frage wäre, kann man per Inputbox einen Spalte angeben in der die Zahlen stehen (A oder D) und dann das Makro so weiter laufen lassen mit Range aus der Inputbox?
Problem ist einfach, das die Tabellen nicht immer die Zahlen in A haben und dann ist man ständig am kopieren.
Beispielmappe anbei,
https://www.herber.de/bbs/user/109793.xlsx
vielen Dank
Peter
'hier mal das bisherige Makro'
Sub LANR()
' Zahl Makro
'Füge neben der Spalte A eine neue Spalte ein
Columns("B:B").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("B1").Select
'Gebe der Spalte eine Überschrift
ActiveCell.FormulaR1C1 = "Zahl"
Range("B2").Select
'Formatiere die Zelle als Text mit 7 mal 0 von links
ActiveCell.FormulaR1C1 = "=TEXT(RC[-1],""0000000"")"
Dim lngLast As Long
lngLast = Cells(Rows.Count, 1).End(xlUp).Row
'Kopiere die Formel bis zur letzen befüllten Zelle
Range("B2").AutoFill Destination:=Range("B2:B" & lngLast)
'Kopieren und einfügen, damit nur die Werte aber nicht die Formeln stehen bleiben
Columns("B:B").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
' lösche die Hilfsspalte wieder
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
Range("A1").Select
ActiveWorkbook.Save
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bereich / Zelle aus Inputbox weiter verarbeiten
29.11.2016 23:55:30
Werner
Hallo Peter,
würde ich nicht mit einer Inptu-Box machen sondern mit einer UserForm mit einer ComboBox drauf, einem CommandButton ok und einem CommandButton Abbrechen. Hier mal der Code dazu:
Diesen Code in die Userform kopieren
Private Sub CommandButton1_Click()
Dim strStartspalte As String
strStartspalte = ComboBox1.Text
If strStartspalte = "Spalte A" Then strStartspalte = "B"
If strStartspalte = "Spalte D" Then strStartspalte = "E"
Application.ScreenUpdating = False
With Sheets("Tabelle1") 'Tabellenblatt anpassen
'Füge neben der Spalte A eine neue Spalte ein
.Columns(strStartspalte).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
'Kopieren und einfügen, damit nur die Werte aber nicht die Formeln stehen bleiben
.Columns(Right(ComboBox1.Text, 1)).Copy
.Columns(strStartspalte).PasteSpecial Paste:=xlPasteValues, operation:=xlNone, _
skipblanks:=False, Transpose:=False
'Gebe der Spalte eine Überschrift
.Range(strStartspalte & "1") = "Zahl"
Application.CutCopyMode = False
'Formatiere die Zelle als Text mit 7 mal 0 von links
Dim loLetzte As Long
loLetzte = .Cells(Rows.Count, strStartspalte).End(xlUp).Row
.Range(.Cells(1, strStartspalte), .Cells(loLetzte, strStartspalte)).NumberFormat = _
"#######0000000"
'lösche die Hilfsspalte wieder
.Columns(Right(ComboBox1.Text, 1)).Delete
.Range(Right(ComboBox1.Text, 1) & "1").Select
End With
ActiveWorkbook.Save
Unload Me
Application.ScreenUpdating = True
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
Private Sub UserForm_Activate()
ComboBox1.AddItem "Spalte A"
ComboBox1.AddItem "Spalte D"
End Sub

Diesen Code in eine allgemeines Modul
Public Sub Anzeigen()
UserForm1.Show
End Sub
Ich hätte zwar eine Testdatei mit der UserForm, kann aber hier derzeit leider keine Dateien hochladen. Könnte ich frühestens am Donnerstag nachmittag wieder.
Im Übrigen stellt sich mir die Frage, ob du nicht viel zu viel Aufwand betreibst. Wenn ich das richtig sehe, dann geht es doch nur darum deine Daten (Zahlen) so umzuformatieren, dass sie 7-Stellig mit führenden 0-en sind. Da könntest du doch gleich die Originaldaten in den Spalten A bzw. D umformatieren und brauchst nicht hin und her zu kopieren.
Gruß Werner
Anzeige
AW: Bereich / Zelle aus Inputbox weiter verarbeiten
30.11.2016 00:52:15
Werner
Hallo Peter,
habe jetzt erst gesehen, dass du ja eine Datei hochgeladen hast. Frage: Brauchst du wirklich Text oder müssen die Zahlen lediglich 7-stelig mit führenden 0-en dargestellt werden.
Dann würde eine enstprechende Formatierung der Spalte A nämlich genügen.
Spalte A auswählen, Formatierung, Benutzerdefiniert, als Format #######0000000
Gruß Werner
AW: Bereich / Zelle aus Inputbox weiter verarbeiten
30.11.2016 06:57:08
Peter
Hallo Werner,
vielen Dank, ja ich benötige die Zahl als Text für weiteren Sverweis, ich könnte zwar die zweite Tabelle auch so formatieren.
Allerdings bekomme ich einen Fehler Objekt erfoderlich bei ComboBox1.AddItem "Spalte A" ?
Aber trotzdem vielen herzlichen Dank für die schnelle Hilfe
Peter
Anzeige
AW: Bereich / Zelle aus Inputbox weiter verarbeiten
30.11.2016 16:27:45
Werner
Hallo Peter,
bezüglich deiner Fehlermeldung: Dann hast du keine ComboBox mit dem Namen ComboBox1, benenne mal die ComboBox in ComboBox1 um, oder du musst überall im Code den Namen der ComboBox an deine vorhandene ComboBox anpassen.
Hier jetzt nochmal der Code. Habe ihn jetzt so geändert, dass die Werte als Text formatiert werden.
Private Sub CommandButton1_Click()
Dim strStartspalte As String
Dim loLetzte As Long
strStartspalte = ComboBox1.Text
If strStartspalte = "Spalte A" Then strStartspalte = "B"
If strStartspalte = "Spalte D" Then strStartspalte = "E"
Application.ScreenUpdating = False
With Sheets("Tabelle1") 'Tabellenblatt anpassen
loLetzte = .Cells(.Rows.Count, Right(ComboBox1.Text, 1)).End(xlUp).Row
'Füge neben der Spalte A eine neue Spalte ein
.Columns(strStartspalte).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
'Formatiere die Zelle als Text mit 7 mal 0 von links
.Range(.Cells(2, strStartspalte), .Cells(loLetzte, strStartspalte)).FormulaR1C1 = _
"=TEXT(RC[-1],""0000000"")"
'Kopieren und einfügen, damit nur die Werte aber nicht die Formeln stehen bleiben
.Range(.Cells(2, strStartspalte), .Cells(loLetzte, strStartspalte)).Copy
.Cells(2, strStartspalte).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks  _
_
:=False, Transpose:=False
'Gebe der Spalte eine Überschrift
.Range(strStartspalte & "1") = "Zahl"
Application.CutCopyMode = False
' lösche die Hilfsspalte wieder
.Columns(Right(ComboBox1.Text, 1)).Delete
.Range(Right(ComboBox1.Text, 1) & "1").Select
End With
'ActiveWorkbook.Save
Unload Me
Application.ScreenUpdating = True
End Sub
Der restliche Code bleibt gleich.
Gruß Werner
Anzeige
AW: Bereich / Zelle aus Inputbox weiter verarbeiten
01.12.2016 13:13:10
Peter
Hallo Werner,
vielen herzlichen Dank, läufz wie geschmiert, das ist es, super Hilfe!
Hatte eine Auswahl aber keine Combobox genommen, das war der Fehler!
Nochmals 1001 Danke
Grüße
Peter
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
01.12.2016 13:28:17
Werner

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige