Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

VB, Excel : Variablen und Feldinhalte aneinader reihen

jdeen / 14 Antworten / Baumansicht Nickles

Hallo zusammen !
Ich möchte den Text aus einer InputBox mit dem Inhalt einer Zelle in
einer neuen Zelle verknüpfen:
Dim Text As string
Text = InputBox ("Text", "Eingabe", "Artikelname")
Range("F2").Select
ActiveCell.FormulaR1C1 = "=RC[-1]& x " & Text ????

HIER HAB ICH MEINE SCWIERIGKEITEN !!!

In "E2" (RC[-1]) steht die Menge, Text ist die Artikelbezeichnung
und dies möchte ich gerne als Zeichenkette in Zelle "F2" einfügen:
Ergebnis-Beispiel : " 5 x Dichtung"
Nachher das Ganze runterkopieren und in Werte wandeln ist kein Problem.

Wer kann mir da helfen?

. . . when the kid next door walking on the moon . . .Wirklich gute Jdeen passen auf einen Bierdeckel
bei Antwort benachrichtigen
peterson jdeen „VB, Excel : Variablen und Feldinhalte aneinader reihen“
Optionen

In Deiner ActiveCell Formel sind die Anführungsstriche schon falsch.

Dim Wert as Integer
Wert = ActiveCell
Cells(2,6) = Wert & " x " & "Text"

2,6 ist die Zelle F2

bei Antwort benachrichtigen
jdeen peterson „In Deiner ActiveCell Formel sind die Anführungsstriche schon falsch. Dim Wert...“
Optionen

Hallo Peterson,

da ich in der Tabelle ca. 20 bis 500 Zeilen habe,
muß ich wohl über " = RC[-1] " gehen.
"Text" ist die Variable, die ich als Bezeichner am Anfang eingebe.
Den automatisch generierten Inhalt der Zelle F2 "=E2& x Dichtung"
möchte ich dann nach F3:fn kopieren, also die Formel.
Und die Formel kopierbar in die Zelle "F2" zu bekommen -
da hab ich jetzt die Schwierigkeiten.

. . . when the kid next door walking on the moon . . .Wirklich gute Jdeen passen auf einen Bierdeckel
bei Antwort benachrichtigen
peterson jdeen „Hallo Peterson, da ich in der Tabelle ca. 20 bis 500 Zeilen habe, muß ich wohl...“
Optionen

Versuche mal, die Zelle direkt anzusprechen.

Du benutzt den Umweg:

Range("F2").Select
ActiveCell.FormulaR1C1 =

Ohne Umweg wäre es:

Range("F2").FormulaR1C1 = "Dein Inhalt"

Vielleicht hilft das ja weiter.

Ich habe mal in alte Makros bei mir reingeschaut.
Ich glaube Deine Formel =RC[-1] ist falsch.
Die richtige Schreibweise ist =R[-1]C

In meinem Makro erstelle ich eine Jahrestabelle und setze ich in verschiedene Zellen eine Berechnungssumme ein, die dann später Werte ermitteln soll.

Cells(32, I + 1).FormulaR1C1 = "=240-SUM(R[-31]C:R[-1]C)"

Das fertige Ergebnis in so einer Zelle sieht dann so aus:
=240-SUMME(B1:B31)
In der nächsten Telle so:
=240-SUMME(D1:D31)
usw.

bei Antwort benachrichtigen
jdeen peterson „Versuche mal, die Zelle direkt anzusprechen. Du benutzt den Umweg: Range F2...“
Optionen

Hallo Peterson,

danke für Deine Tipp's.

Das Ansprechen der Zellen ist nicht das Problem.
Das Problem liegt im Füllen.
Wenn ich mit der Variable "Text" den Umweg über eine Zelle gehe, in die ich die Variabe schreibe, und dann die Zellen aneinanderbaue, funktioniert das einwandfrei:

...

' Dimensionierung der Variablen

Dim Text As String

' Abfrage Text

Text = InputBox("Artikel", "Benutzereingabe : ", "A")

...
weiterer Code ...
...

' text in Kopfzeile Spalte M schreiben

Range("m1").Select
ActiveCell.FormulaR1C1 = "Artikeltext"

' x Text in Kopfzeile Spalte N schreiben

Range("n1").Select
ActiveCell.FormulaR1C1 = " x " & Text

' Spalte N mit x Text füllen

Range("n1").Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Paste

' Menge x Text in M2 schreiben

Range("m2").Select
ActiveCell.FormulaR1C1 = "=RC[-4]&RC[1]"

' Spalte M mit Menge x Text füllen

Range("m2").Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Paste

Application.CutCopyMode = False

' Spalte M in Werte wandeln

Columns("M:M").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False

' Spalte N löschen

Columns("N:N").Select
Selection.Delete Shift:=xlToLeft

...

Ich wollte aber wissen, wie das auf einen Wisch geht.

Gruß jdeen

. . . when the kid next door walking on the moon . . .Wirklich gute Jdeen passen auf einen Bierdeckel
bei Antwort benachrichtigen
peterson jdeen „Hallo Peterson, danke für Deine Tipp s. Das Ansprechen der Zellen ist nicht das...“
Optionen

Ich kann Dir dabei nicht helfen, weil ich mir das nicht richtig vorstellen kann.
Allein das Belegen von 65000 Zellen ist für mich unlogisch.

Aber im Internet gibt es bestimmt Hilfen dazu.

bei Antwort benachrichtigen
jdeen peterson „Ich kann Dir dabei nicht helfen, weil ich mir das nicht richtig vorstellen kann....“
Optionen

Hallo Peterson,

wenn ich eine Datei mit 65000 Datenzeilen habe,
sollen auch alle bedient werden. Ist doch logo, oder ?
Aber um das geht`s doch gar nicht.
Ich wollte doch nur die Syntax für das Verknüpfen
einer Variable mit einem Zellinhalt in Form einer
auf weitere Zellen kopierbaren Formel.

Im Internet habe ich leider diese Konstellation nicht gefunden.
Es muß aber gehen, wir fliegen auch auf den Mond.

Gruß jdeen

. . . when the kid next door walking on the moon . . .Wirklich gute Jdeen passen auf einen Bierdeckel
bei Antwort benachrichtigen
peterson jdeen „Hallo Peterson, wenn ich eine Datei mit 65000 Datenzeilen habe, sollen auch alle...“
Optionen

Sicherlich geht das.
Aber was Du da machst, ist nicht das Verknüpfen einer Variablen mit einem Zelleninhalt, sondern das Verknüpfen einer Variablen mit der Adresse einer Zelle.

Um den Inhalt einer Zelle zu bekommen, mußt Du die Zelle auslesen.
In meinem Beispiel habe ich Dir doch gezeigt, wie ich mit einem Makro in ein Zelle einen Adressbereich eingefügt habe und eine Formel eingetragen habe.

Mach das so:

Dim Text As String
Text = InputBox("Text", "Eingabe", "Artikelname")
Cells(2, 6) = Cells(2, 5) & " x " & Text

Mußt Du halt mit einer Schleife arbeiten.

bei Antwort benachrichtigen
jdeen peterson „Sicherlich geht das. Aber was Du da machst, ist nicht das Verknüpfen einer...“
Optionen

OK.
Hab's kapiert.

Lieber wäre es mir, die Formel als Ergebnis zu erhalten.
Dann kann nachträglich die Menge verändert werden und das Ergebnis :
"2 x Dichtung" würde dann automatisch z.B. "5 x Dichtung" lauten.

gruß jdeen

. . . when the kid next door walking on the moon . . .Wirklich gute Jdeen passen auf einen Bierdeckel
bei Antwort benachrichtigen
peterson jdeen „OK. Hab s kapiert. Lieber wäre es mir, die Formel als Ergebnis zu erhalten....“
Optionen

Ich habe mal ein wenig rumgespielt.

ActiveCell.FormulaR1C1 = "=RC[-1] & "" x "" & ""Artikel"" "

bei Antwort benachrichtigen
jdeen peterson „Ich habe mal ein wenig rumgespielt. ActiveCell.FormulaR1C1 RC -1 x Artikel “
Optionen

Guten Morgen,

hab ich auch schon probiert.
Bringt mir den Variablen-Namen,
leider nicht den Inhalt.
Hab's mit dieser Hilfsspalte gelöst, die ich nachher wieder lösche.
Funktioniert, zufrieden bin ich nicht ;)

Gruß jdeen

. . . when the kid next door walking on the moon . . .Wirklich gute Jdeen passen auf einen Bierdeckel
bei Antwort benachrichtigen
peterson jdeen „Guten Morgen, hab ich auch schon probiert. Bringt mir den Variablen-Namen,...“
Optionen

Das Problem liegt darin, daß der Befehl eine Formel in eine Zelle schreibt.
Die Variable "Text" ist aber der ExcelSheet nicht bekannt. Daher die Fehlermeldung #WERT!
Dort muß was stehen, was es im Tabellenblatt gibt.

Wie Du es schon selbst rausgefunden hast, den Artikel irgendwo hinschreiben, dann kann die Formel das übernehmen.

Ich würde Dir folgendes vorschlagen:
Gib irgendeiner Zelle außerhalb des sichtbaren Bereiches einen Namen. Dort plazierst Du dann Deine Artikelbezeichnung. Dort kann dann die Formel zugreifen.

bei Antwort benachrichtigen
jdeen peterson „Das Problem liegt darin, daß der Befehl eine Formel in eine Zelle schreibt. Die...“
Optionen

Genau so hab ich nun das Ganze umgangen.
Wenn die "Menge" etc. OK ist, in Werte wandeln
- manche Druckprogramme lieben keine Formeln -
und die Hilfszellen löschen.

Gruß jdeen

. . . when the kid next door walking on the moon . . .Wirklich gute Jdeen passen auf einen Bierdeckel
bei Antwort benachrichtigen
peterson jdeen „Genau so hab ich nun das Ganze umgangen. Wenn die Menge etc. OK ist, in Werte...“
Optionen

Ich habe noch nie gehört, daß beim Audruck einer Excel-Tabelle oder beim Zugriff auf die Daten Formeln gedruckt werden.
Es wird bei der Übergabe immer nur der "errechnete" Inhalt der Zelle bereitgestellt.

Wenn Du den Inhalt der Hilfszellen nicht löschen magst, nimmst Du halt weiße Schrift.
Beim eventuellen Drucken der Tabelle mußt Du halt den Druckbereich festlegen.

bei Antwort benachrichtigen
jdeen peterson „manche Druckprogramme lieben keine Formeln“
Optionen

Hallo Peterson,
melde mich nochmal zum Thema Drucken:
Wenn ich Excel-Tabellen als Datenquelle für einen Serienbrief verwende, gibt es Programme, die mit einer Formel im Feld nichts anfangen können, d.h. sie rechnen nicht und bringen im (besten Fall) Fehlermeldungen. Deshalb muß man zuerst die Formel in Werte wandeln. Ist einfach sicherer.

. . . when the kid next door walking on the moon . . .Wirklich gute Jdeen passen auf einen Bierdeckel
bei Antwort benachrichtigen