Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1172to1176
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

VERKETTEN über VBA

VERKETTEN über VBA
Dirk
Guten Morgen,
hab da ein Problem die folgende Formel in VBA umzusetzen.
Tabelle1

 ABCDE
1Nr. 1Nr. 2Nr. 3Nr. 4Ergebnis
201.01.00.0001.01.00.00
301.02.01.0001.02.01.00
402.02.01.0102.02.01.01

Formeln der Tabelle
ZelleFormel
E2=VERKETTEN(TEXT(A2;"00"); TEXT(B2;"00"); TEXT(C2;"00"); TEXT(D2;"00"))*1
E3=VERKETTEN(TEXT(A3;"00"); TEXT(B3;"00"); TEXT(C3;"00"); TEXT(D3;"00"))*1
E4=VERKETTEN(TEXT(A4;"00"); TEXT(B4;"00"); TEXT(C4;"00"); TEXT(D4;"00"))*1


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Die Formel (das Makro) soll nur ausgeführt werden, wenn die Eingabe in der entsprechenden Zeile (beschränkt auf Spalte A bis D) erfolgt ist.
Die Werte in Spalte A bis D sind mit folgendem Zahlenformat A 00, B-D "."00 hinterlegt. Das Zahlenformat für Spalte E sieht wie folgt aus: 00"."00"."00"."00.
Kann mir da am frühen Morgen schon jemand helfen?
Danke
Gruß Dirk

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
VERKETTEN über VBA
18.08.2010 09:51:46
Erich
Hi Dirk,
statt VERKETTEN kann man auch einfach & zwischen die Teile setzen.
Die Formate in den Spalten A:D sind beliebig, die Werte dort müssen Zahlen sein.
Hier zunächst zwei kürzere Formelvarianten (Spalten F und G, die Formate sind wie bei dir):
 ABCDEFG
1Nr. 1Nr. 2Nr. 3Nr. 4VBAErgebnisoder
2110001.01.00.0001.01.00.0001.01.00.00
3121001.02.01.0001.02.01.0001.02.01.00
4221102.02.01.0102.02.01.0102.02.01.01
533 3 03.03.00.0303.03.00.03

Formeln der Tabelle
ZelleFormel
F2=1*(TEXT(A2;"00")&TEXT(B2;"00")&TEXT(C2;"00")&TEXT(D2;"00"))
G2=100*(100*(100*A2+B2)+C2)+D2

Spalte E wurde mit VBA gefüllt. E5 ist leer, weil A5:D5 nicht vollständig eingegeben ist.
Hier der Code: Option Explicit Sub myVerkette() Dim zz As Long For zz = 2 To Cells(Rows.Count, 1).End(xlUp).Row If Application.Count(Cells(zz, 1).Resize(, 4)) = 4 Then Cells(zz, 5) = 100 * (100 * (100 * Cells(zz, 1) + _ Cells(zz, 2)) + Cells(zz, 3)) + Cells(zz, 4) Else Cells(zz, 5).ClearContents End If Next zz End Sub Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: VERKETTEN über VBA
18.08.2010 10:47:41
Dirk
Hallo Erich,
wow, das ging ja schnell und dann auch noch mit zusätzlichen Formel-Möglichleiten, vielen Dank!
Eine Frage hab ich da noch :-)
Kann man das Makro immer dann ausführen (automatisch), wenn in den Zeilen die Werte eingetragen werden?
Danke für Deine Zeit
Gruß Dirk
Verketten bei Change-Ereignis
18.08.2010 11:17:49
Erich
Hi Dirk,
die Prozedur "myVerkette" kannst löschen und stattdessen in den Code der Tabelle
diese Ereignisprozedur kopieren:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngB As Range, zz As Long
Set rngB = Intersect(Target, Cells(2, 1).Resize(Rows.Count - 1, 4))
If rngB Is Nothing Then Exit Sub
For zz = Application.Max(2, rngB.Row) To rngB.Row + rngB.Rows.Count - 1
If Application.Count(Cells(zz, 1).Resize(, 4)) = 4 Then
Cells(zz, 5) = 100 * (100 * (100 * Cells(zz, 1) + _
Cells(zz, 2)) + Cells(zz, 3)) + Cells(zz, 4)
Else
Cells(zz, 5).ClearContents
End If
Next zz
End Sub
Das Format der Spalte E brauchst du ja nur einmal per Hand einzurichten.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
Verketten mit Format?
18.08.2010 11:57:53
Dirk
Hallo Erich,
Deine Lösung klappt super, vielen Dank.
Würde gerne auch das Format mit in den CODE einbeziehen.
Habe es mit Cells(zz, 5).NumberFormat = "00"."00"."00"."00" versucht, doch da meckert er nur Syntaxfehler. Darf ich dich noch mal um Hilfe bitten?
Vielen Dank
Gruß Dirk
Format?
18.08.2010 12:49:51
Peter.H
Hallo Dirk
so sollte es funktionieren:
Cells(zz, 5).NumberFormat = "00"".""00"".""00"".""00"
Gruß
Peter
"" machen den Unterschied...
18.08.2010 12:53:00
Ramses
Hallo
Cells(zz, 5).NumberFormat = "00"".""00"".""00"".""00"
Zur Info:
Einfach mal den Makrorekorder starten, dein Aktion durchführen und stoppen.
Anschliessend den Code ansehen wenn du nicht mehr weiterkommst.
Gruss Rainer
Anzeige
Verketten und Format
18.08.2010 12:55:20
Erich
Hi Dirk,
das Zahlenformat jeweils für einzelne Zellen festzulegen, bläht die Dateigröße unnötig auf.
Was spricht dagegen, der Spalte E das Format einmalig per Hand zu verpassen?
Mit Cells(zz, 5).ClearContents bleibt das Format erhalten.
Wenn schon per Code, würde ich auch in VBA der ganzen Spalte das Format geben.
Oder sollen in Spalte E noch Zahlen in Zellen mit anderen Formaten stehen?
Per Makroaufzeichnung kannst du leicht herausbekommen, wie die richtige Syntax ist:

Sub Makro1()
' Makro1 Makro
' Makro am 18.08.2010 von Erich aufgezeichnet
Selection.NumberFormat = "00"".""00"".""00"".""00"
End Sub

Obwohl ich das für unnötig und eher schädlich halte, hier der Code,
der bei jedem Ausfüllen in Spalte E die Spalte formatiert:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngB As Range, zz As Long, bolAend As Boolean
Set rngB = Intersect(Target, Cells(2, 1).Resize(Rows.Count - 1, 4))
If rngB Is Nothing Then Exit Sub
For zz = Application.Max(2, rngB.Row) To rngB.Row + rngB.Rows.Count - 1
If Application.Count(Cells(zz, 1).Resize(, 4)) = 4 Then
Cells(zz, 5) = 100 * (100 * (100 * Cells(zz, 1) + _
Cells(zz, 2)) + Cells(zz, 3)) + Cells(zz, 4)
bolAend = True
Else
Cells(zz, 5).ClearContents
End If
Next zz
If bolAend Then Columns(5).NumberFormat = "00"".""00"".""00"".""00"
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
Vielen Dank an alle ...
18.08.2010 13:16:43
Dirk
Hallo ...
@Erich
Deine Einwände bzgl. Dateigröße werde ich im Auge behalten … und … ja, du liegst mit deiner Vermutung richtig, nicht die ganze Spalte E soll mit diesem Zellformat bestückt werden.
Vielen Dank für Deine Unterstützung!
@Peter & Rainer
Auch Euch vielen Dank!
Der Hinweis mit dem Makrorekorder ist gut, nur vergess ich ihn leider viel zu oft, sorry
Habe mich vorerst für die Varinate Cells(zz, 5).NumberFormat = "00"".""00"".""00"".""00" entschieden.
Danke und Gruß
Dirk

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige