Microsoft Excel

Herbers Excel/VBA-Archiv

Range nach best. Zellinhalt definieren

Betrifft: Range nach best. Zellinhalt definieren von: Christoph
Geschrieben am: 20.10.2020 13:46:22

Hallo zusammen,

ich habe für mein Problem bisher trotz Suche keine Lösung gefunden. Also ich fange mal an was ich benötige:

ich habe mir ein Funktion geschrieben/zusammenkopiert, welche eine txt-datei importiert. Soweit so gut. Nun musste ich feststellen, dass die txt-dateien welche ich bekomme darin unterscheiden können, dass gewisse Werte nicht in Spalte 3 sondern in Spalte 4 stehen (nur beispielhaft). Ich habe als nun Makros, die auf eine gewisse Zelle bzw. Zellbereiche fixiert sind.

Z.B führe ich folgenden Code aus: ##### DTCbuffer ######
Sheets("Allgemein").Select
Range("B127").Select
Selection.TextToColumns Destination:=Range("B127"), DataType:=xlFixedWidth _
, FieldInfo:=Array(Array(0, 1), Array(5, 1), Array(11, 1), Array(17, 1), Array(23, 1), _
Array(29, 1), Array(35, 1), Array(41, 1), Array(47, 1), Array(53, 1), Array(59, 1), Array( _
65, 1), Array(71, 1), Array(77, 1), Array(83, 1), Array(89, 1), Array(95, 1), Array(101, 1), _
Array(107, 1), Array(113, 1), Array(119, 1), Array(125, 1), Array(131, 1), Array(137, 1), _
Array(143, 1), Array(149, 1), Array(155, 1), Array(161, 1), Array(167, 1), Array(173, 1), _
Array(179, 1), Array(185, 1), Array(191, 1), Array(197, 1), Array(203, 1), Array(209, 1), _
Array(215, 1), Array(221, 1), Array(227, 1), Array(233, 1), Array(239, 1), Array(245, 1), _
Array(251, 1), Array(257, 1), Array(263, 1), Array(269, 1), Array(275, 1), Array(281, 1), _
Array(287, 1), Array(293, 1), Array(299, 1), Array(305, 1), Array(311, 1), Array(317, 1), _
Array(323, 1), Array(329, 1), Array(335, 1), Array(341, 1), Array(347, 1), Array(353, 1), _
Array(359, 1), Array(365, 1), Array(371, 1), Array(377, 1), Array(383, 1), Array(389, 1), _
Array(395, 1), Array(401, 1), Array(407, 1), Array(413, 1), Array(419, 1), Array(425, 1), _
Array(431, 1), Array(437, 1)), TrailingMinusNumbers:=True

Hier ist die Zelle B127 dann fix, sollte sich aber der Wert in Zeile 128 verschieben, da in der txt eine zusätzliche Zeile eingefügt ist, dann geht es ´logischer weise nicht.

Ich hätte nun gerne, dass die Spalte A in eine gewissen Range nach einem Wert sucht, in diesem spezifischen Fall "DtcBuffer" und dann in der dazugehörigen B Zelle, als z.B. dtc buffer steht in Zelle A130 dann soll oben ausgeführter Code in Zelle B130 ausgeführt werden.

Ich hoffe ich konnte mein Problem verständlich rüberbringen?! Velen Dank schonmal vorab für eure Mühen und ja auch der Code oben ist bestimmt verbesserungwürdig, bin halt ein Rookie....

Gruß

Christoph

Betrifft: AW: Range nach best. Zellinhalt definieren
von: ChrisL
Geschrieben am: 20.10.2020 19:06:44

Hi Christoph

Wenn ich richtig verstehe, kannst du den Suchvorgang aufzeichnen.

Tabelle aktivieren
Ctrl+F
Cursor springt nach A127, A128, A129, A130...
Pfeiltaste nach rechts
Code ausführen, wobei die fixe Ziel-Range ebenfalls durch Selection zu ersetzen ist:
Selection.TextToColumns Destination:=Selection, DataType:=...
Falls die Annahme stimmt, könnte man ggf. darauf aufbauen u.a. Select/Activate raus und Fehlerhandling, wenn nichts gefunden wird.

cu
Chris

Betrifft: AW: Range nach best. Zellinhalt definieren
von: Christoph
Geschrieben am: 21.10.2020 07:18:36

Hallo Chris,



danke für den Hinweis. Also aufzeichnen kann ich ja. habe verstanden, was du meinst, probiere es mal aus. Melde mich wieder...

Betrifft: AW: Range nach best. Zellinhalt definieren
von: Beverly
Geschrieben am: 21.10.2020 07:59:08

Hi Christoph,

vielleicht so:
Dim rngZelle As Range
With Worksheets("Allgemein")
  Set rngZelle = .Columns(1).Find("DtcBuffer", lookat:=xlPart)
  If Not rngZelle Is Nothing Then
    rngZelle.Offset(0, 1).TextToColumns Destination:=Range("B127"), DataType:=xlFixedWidth _
      , FieldInfo:=Array(Array(0, 1), Array(5, 1), Array(11, 1), Array(17, 1), _
      Array(23, 1), Array(29, 1), Array(35, 1), Array(41, 1), Array(47, 1), _
      Array(53, 1), Array(59, 1), Array(65, 1), Array(71, 1), Array(77, 1), _
      Array(83, 1), Array(89, 1), Array(95, 1), Array(101, 1), Array(107, 1), _
      Array(113, 1), Array(119, 1), Array(125, 1), Array(131, 1), Array(137, 1), _
      Array(143, 1), Array(149, 1), Array(155, 1), Array(161, 1), Array(167, 1), _
      Array(173, 1), Array(179, 1), Array(185, 1), Array(191, 1), Array(197, 1), _
      Array(203, 1), Array(209, 1), Array(215, 1), Array(221, 1), Array(227, 1), _
      Array(233, 1), Array(239, 1), Array(245, 1), Array(251, 1), Array(257, 1), _
      Array(263, 1), Array(269, 1), Array(275, 1), Array(281, 1), Array(287, 1), _
      Array(293, 1), Array(299, 1), Array(305, 1), Array(311, 1), Array(317, 1), _
      Array(323, 1), Array(329, 1), Array(335, 1), Array(341, 1), Array(347, 1), _
      Array(353, 1), Array(359, 1), Array(365, 1), Array(371, 1), Array(377, 1), _
      Array(383, 1), Array(389, 1), Array(395, 1), Array(401, 1), Array(407, 1), _
      Array(413, 1), Array(419, 1), Array(425, 1), Array(431, 1), Array(437, 1)), _
      TrailingMinusNumbers:=True
  End If
End With


GrußformelBeverly's Excel - Inn

Betrifft: AW: Range nach best. Zellinhalt definieren
von: ChrisL
Geschrieben am: 21.10.2020 08:05:05

Hi

Etwa so hätte ich mir das auch gedacht, aber... ;)
rngZelle.Offset(0, 1).TextToColumns Destination:=rngZelle.Offset(0, 1), DataType:=
cu
Chris

Betrifft: AW: Range nach best. Zellinhalt definieren
von: Beverly
Geschrieben am: 21.10.2020 09:41:58

Hi Chris,

du hast natürlich recht, die Zielzelle darf nicht Range("B127") sondern muss rngZelle.Offset(0, 1) sein - hatte ich vergessen zu ändern.


GrußformelBeverly's Excel - Inn

Beiträge aus dem Excel-Forum zum Thema "Range nach best. Zellinhalt definieren"