2k Aufrufe
Gefragt in Tabellenkalkulation von
Folgendes Problem.
Wie ihr vielleicht erkennt versuche ich mit Hilfe von VB Excel dazu zu bewegen Abkürzungen in volle Städtenamen zu wandeln.
Das ging auch ganz gut. Nur möchte ich jetzt -in meinem Grössenwahn - das nicht nur mit Zelle B12 machen, sondern das ganze von B12 bis B20.
Nur so wie ich es hier hingebastelt habe geht irgendwie nicht.

Die Problemstelle ist zur schnelleren auffindung mit (<----) markiert.

Wenn jemand mir da mal helfen könnte:(


Private Sub Worksheet_Change(ByVal Target As Range)
Dim B(50) As String
Dim j As Integer

Dim stadtk(50) As String
stadtk(1) = "QLB"
stadtk(2) = "HBS"

Dim stadtv(50) As String
stadtv(1) = "Quedlinburg"
stadtv(2) = "Halberstadt"

Dim i As Integer
For j = 12 To 20
For i = 1 To 2

If Range("B(j)").Value = stadtk(i) Then <----
Range("B(j)").Select <----
ActiveCell.FormulaR1C1 = stadtv(i)

End If
Next i
Next j
End Sub

6 Antworten

0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

mach es mal so

If Range("B"& j).Value = stadtk(i) Then Range("B" & j).Value = stadtv(i)

Anmerkung: ohne End If geht nur wenn eine Funktion auszuführen ist

Gruß

Helmut
0 Punkte
Beantwortet von
Toll. Da probiere ich stundenlang alle möglichen und unmöglichen Theorien aus und dann ist es das naheliegenste.

Danke, damit hast du mir sehr geholfen:)
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi bark ^^

hier ein beispiel wie ich es viielleicht realisiert haette

tab 1 spalte b deine eingabe der kuerzel
tab 2 spalte a kuerzel,ab zeile 2/koennte ausgeblendet sein
tab 2 spalte b name,ab zeile 2/koennte ausgeblendet sein

einzufuegen
alt+f11/projektexplorer/deinetabelle

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Selection.Count < 2 Then
If Target.Column = 2 Then
Dim suche As Range
Set suche = Worksheets(2).Range("A2:A" & Worksheets(2).Range("A" & Rows.Count).End(xlUp).Row).Find(Workbooks(1).Worksheets(1).Cells(Target.Row, 2))
If Not suche Is Nothing Then
Worksheets(1).Cells(Target.Row, 2) = Worksheets(2).Cells(suche.Row, 2)
End If
End If
End If
Application.EnableEvents = True
End Sub


gruss nighty
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi bark ^^

wenn dich arrays interessieren,dann ein beispiel :-)

gruss nighty

Option Explicit
Sub ArraySuche()
Dim ZeilenIndex As Long
Dim ArrQuelle As Variant
With Worksheets(2)
ArrQuelle = .Range("A2:B" & ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row)
End With
With Worksheets(1)
For ZeilenIndex = LBound(ArrQuelle, 1) To UBound(ArrQuelle, 1)
If ArrQuelle(ZeilenIndex, 1) = .Cells(1, 2) Then
.Cells(1, 2) = ArrQuelle(ZeilenIndex, 2)
Exit For
End If
Next ZeilenIndex
End With
End Sub
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi bark ^^

beschreibung :-))

tab 1 spalte b zeile 1 deine eingabe des kuerzel
tab 2 spalte a kuerzel,ab zeile 2/koennte ausgeblendet sein
tab 2 spalte b name,ab zeile 2/koennte ausgeblendet sein

gruss nighty
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

ActiveSheet muss noch gelöscht werden

gruss nighty
...