Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Verketten per VBA

Forumthread: Verketten per VBA

Verketten per VBA
27.03.2013 09:37:33
Chris
Hallo, zusammen!
Ich möchte im Sheet "Test" in der Range A1:A2 die Werte aus dem Sheet "Test1" Range H5:H6 einfügen und dort vor jeden Wert ein Ausrufezeichen setzen.
Sub test() Sheets("Test").Range("A1:A2").Value = "!" & Sheets("Test1").Range("H5:H6").Value End Sub
Ohne die Verkettung funktioniert das auch, mit der Verkettung leider nicht.
Ich bin für jede Anregung dankbar!

Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verketten per VBA
27.03.2013 09:40:22
ingoG
Hallo Chris,
versuche es mal mit
Sheets("Test").Range("A1:A2").TEXT = "!" & Sheets("Test1").Range("H5:H6").Value
Gruß Ingo

AW: Verketten per VBA
27.03.2013 09:44:55
Matthias
Hallo
So steht in in jeder Zielzelle der gleiche String!
Ich versteh also nicht wirklich was Du vorhast.
With Sheets("Test")
.Range("A1:A2").Value = "!" & .Range("H5").Value & .Range("H6").Value
End With
Gruß Matthias

Anzeige
AW: Verketten per VBA
27.03.2013 09:46:40
Chris
Hallo, Ingo!
Danke für das schnelle feedback, aber das funzt leider auch nicht. Es kommt nur die Fehlermeldung "Typen unverträglich"

AW: Verketten per VBA
27.03.2013 09:55:14
Chris
Hallo, Matthias!
In den Zellen H5:H6 sollen die selben Werte stehen wie im anderen Tabellenblatt in den Zellen A1:A2, nur eben mit einem ! vor jedem Wert.
Mit deinem Vorschlag stehen nur die Ausrufezeichen in den Zellen.

Anzeige
AW: Verketten per VBA
27.03.2013 10:07:16
Matthias
Hallo
Hatte ich überlesen
1 x Sheets(Test)
1 x Sheets(Test1)
 With Sheets("Test1")
Sheets("Test").Range("A1:A2").Value = "!" & .Range("H5").Value & .Range("H6").Value
End With
Trotzdem stehen dann in beiden Zelle die gleichen Strings
Gruß Matthias

Anzeige
AW: Verketten per VBA
27.03.2013 10:16:13
Tino
Hallo,
habe es mal so versucht.
Bei einem Vertikalen Zellbereich müssen diese Zellen zuvor zu einem Horizontalen gedreht werden.
Wenn es mehrere Spalten sind, müsstest Du entsprechend eine Schleife einbauen.
Sub test()
Dim Verketten
With Application
Verketten = "!" & Join(.Transpose(Sheets("Test1").Range("H5:H6").Value), Chr(0) & "!")
Verketten = .Transpose(Split(Verketten, Chr(0)))
Sheets("Test").Range("A1:A2").Value = Verketten
End With
End Sub
Gruß Tino

Anzeige
hä? Spalte(A) und Spalte(H)
27.03.2013 10:19:39
Matthias
Hallo Tino
Transponieren ist doch gar nicht nötig.
oder hab ich was falsch verstanden?
Gruß Matthias

lass es doch mal weg! oT.
27.03.2013 10:21:26
Tino

Variante2
27.03.2013 10:23:19
Matthias
Hallo
Variante2 (die ich eher vermute)
Für Dein gepostets Beispiel!
Test1

 H
5Hallo Chris
6Hallo World


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Code:
Option Explicit
Sub chris()
Dim x&
With Sheets("Test1")
For x = 1 To 2
Sheets("Test").Range("A" & x).Value = "!" & .Range("H" & x + 4).Value
Next
End With
End Sub
Ergebnis:
Test

 A
1!Hallo Chris
2!Hallo World


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Matthias

Anzeige
AW: Verketten per VBA
27.03.2013 10:25:17
Chris
Danke, Matthias!
Das war's!

noch eine Variante
27.03.2013 10:43:35
Tino
Hallo,
Sub Noch_Eine()
With Sheets("Test").Range("A1:A2")
.FormulaR1C1 = "=""!""&" & Sheets("Test2").Range("H5").Address(0, 0, xlR1C1, True)
.Value = .Value
End With
End Sub
Gruß Tino

Anzeige
AW: noch eine Variante
27.03.2013 14:28:15
Chris
Danke, Tino!
Das werd ich auch testen

Na, am einfachsten wäre wohl immer noch ...
27.03.2013 16:30:31
Luc:-?
ein 2Zeiler, Chris,
hier als 1Zeiler geschrieben…
Sheets("Test").Cells(1, 1) = "!" & Sheets("Test1").Cells(5, 8): Sheets("Test").Cells(2, 1) = "!" & Sheets("Test1").Cells(6, 8)
…obwohl Sheets("Test").Range("A1:A2") = WorksheetFunction.Concatenate("!", Sheets("Test1").Range("H5:H6")) evtl auch fktionieren könnte. Wenn nicht, dann viell…
Sheets("Test").Range("A1:A2") = Evaluate("Concatenate(""!"",{""" & Join(WorksheetFunction.Transpose(Sheets("Test1").Range("H5:H6")), """;""") & """})")
…wobei es egal ist, ob H5:H6 Text oder Zahlen enthält.
Und selbstverständlich könnte man dann auch gleich …
Sheets("Test").Range("A1:A2") = Evaluate("{""!" & Join(WorksheetFunction.Transpose(Sheets("Test1").Range("H5:H6")), """;""!") & """}")
…schreiben, wobei Transpose deshalb erforderlich ist, weil Join nur 1dimensionale Vektoren als Argument akzeptiert, ein vertikaler Vektor aber immer 2dimensional ist!
Gruß + FrOst, Luc :-?
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Werte aus einer Excel-Tabelle mit VBA verketten


Schritt-für-Schritt-Anleitung

Um in Excel mit VBA Werte aus einer Tabelle zu verketten, kannst Du folgenden Code verwenden. Das Beispiel nimmt an, dass Du Werte aus dem Bereich H5:H6 in das Blatt "Test" in die Zellen A1:A2 übertragen möchtest, wobei jedem Wert ein Ausrufezeichen vorangestellt wird:

Sub Verkettung()
    Dim x As Integer
    With Sheets("Test1")
        For x = 1 To 2
            Sheets("Test").Range("A" & x).Value = "!" & .Range("H" & x + 4).Value
        Next x
    End With
End Sub

Dieser Code durchläuft die Zellen und fügt das Ausrufezeichen hinzu. Stelle sicher, dass Du die richtigen Zellbereiche und Blätter verwendest.


Häufige Fehler und Lösungen

  • Typen unverträglich Fehler: Dieser Fehler kann auftreten, wenn Du versuchst, Werte aus einem Bereich direkt zuzuweisen. Verwende stattdessen eine Schleife oder die Join-Funktion.

  • Alle Zellen zeigen den gleichen Wert an: Wenn Du die Werte ohne Schleife zuweist, erhältst Du in allen Zielzellen denselben Wert. Achte darauf, die Schleife korrekt zu implementieren.


Alternative Methoden

Eine andere Möglichkeit, um Werte zu verketten, ist die Verwendung der Evaluate-Funktion in VBA. Hier ein Beispiel:

Sub AlternativeVerkettung()
    Sheets("Test").Range("A1:A2").Value = Evaluate("{" & Join(Application.Transpose(Sheets("Test1").Range("H5:H6").Value), "!,") & "}")
End Sub

Diese Methode verwendet das Join-Kommando, um die Werte aus dem Bereich H5:H6 zusammenzufügen.


Praktische Beispiele

Hier sind einige weitere Varianten, wie Du mit VBA verketten kannst:

  1. Verwendung der Concatenate-Funktion:

    Sheets("Test").Range("A1:A2") = WorksheetFunction.Concatenate("!", Sheets("Test1").Range("H5:H6"))
  2. Mit FormulaR1C1:

    Sub MitFormel()
       With Sheets("Test").Range("A1:A2")
           .FormulaR1C1 = "=""!"" & " & Sheets("Test1").Range("H5").Address
           .Value = .Value
       End With
    End Sub

Tipps für Profis

  • Wenn Du mit größeren Datenmengen arbeitest, überlege, ob es effizienter ist, die Werte in ein Array zu laden, bevor Du sie in das Excel-Blatt schreibst.
  • Nutze die Application.Transpose-Funktion, um vertikale Bereiche in horizontale zu konvertieren, falls notwendig.
  • Denke daran, dass die Verwendung von With den Code lesbarer macht und die Leistung verbessern kann.

FAQ: Häufige Fragen

1. Kann ich VBA verwenden, um Werte aus mehreren Spalten zu verketten? Ja, Du kannst dies tun, indem Du die Schleife erweiterst und die entsprechenden Spalten in der Formel anpasst.

2. Wie kann ich sicherstellen, dass die Verkettung nur mit Textwerten funktioniert? Du kannst CStr verwenden, um sicherzustellen, dass alle Werte als Text behandelt werden, bevor Du sie verkettest:

Sheets("Test").Range("A" & x).Value = "!" & CStr(.Range("H" & x + 4).Value)

Nutze diese Anleitungen, um effizient mit der VBA-Funktionalität in Excel zu arbeiten und Deine Daten nach Deinen Wünschen zu verketten!

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige