dudelidude
Goto Top

Excel 2003 Vba Schleife über Matrix

Hallo liebes Forum!Gut das es schon Donnerstag ist!

Ich habe folgendes Problem.Ich will um eine Übersetzung in meinem Tool anzulegen Zellen mit dem TranslationTable sheet verknüpfen! Dazu möchte ich eine Schleife benutzen,
die diesen Bezug für mich in die jeweilige Zelle schreibt. Ich habe schon einen funktionierenden Code gebastelt, der allerdings nur über eine Spalte läuft. Ich würde aber gern, dass die Spallte von B1 bis Z 200 läuft. Vielleicht kann ja jemand den Code so anpassen, dass es geht.

Sub Bezug()

Dim i

For i = 1 To 200

Sheets("ProjectStructure").Select
Range("D" & i).Select

If ActiveCell.Value = "Mr/s" Then
ActiveCell.Value = "='Translation Table'!A159"
End If
If ActiveCell.Value = "First Name" Then
ActiveCell.Value = "='Translation Table'!A160"
End If
If ActiveCell.Value = "Surname" Then
ActiveCell.Value = "='Translation Table'!A161"

End If

Next i


End Sub

Content-Key: 170543

Url: https://administrator.de/contentid/170543

Ausgedruckt am: 28.03.2024 um 16:03 Uhr

Mitglied: TsukiSan
TsukiSan 28.07.2011 um 09:42:21 Uhr
Goto Top
du kannst es folgendermaßen mit 2 Schleifen aufbauen. Hier was zum testen:
 For a = 66 To 90
    For i = 1 To 200
        Range(Chr(a) & i).Select
          ' hier deine IFs rein.....  
    Next i
 Next a
die Schleife a gibt dir (CHR vorangestellt) die Zeichen aus dem ASCII-Code und die Schleife i drinnen die Breiche (1 bis 200).

Gruss
Tsuki
Mitglied: bastla
bastla 28.07.2011 um 10:25:13 Uhr
Goto Top
@tsuki
Anstelle von "Range()" würde sich aber eher "Cells()" aufdrängen - dann sind auch keine Kunststücke mit dem Zusammenbauen der Zelladresse (ab "AA" würde es noch lustiger) erforderlich ...

Als Altenative (je nachdem, was ev noch passieren soll) vielleicht auch ein
For Each Zelle In Range("B1:Z200")
@Dudelidude
Sheets("ProjectStructure").Select  
Range("D" & i).Select  

If ActiveCell.Value = "Mr/s" Then  
lässt sich auch ohne "Select" umsetzen:
With Sheets("ProjectStructure").Range("D" & i)  
    If .Value = "Mr/s" Then  
    ....
End With
wobei ich aber, wie oben erwähnt, "Cells" verwenden würde:
With Sheets("ProjectStructure").Cells(i, "D")
Anstelle des Buchstabens kannst Du auch die Nummer der Spalte verwenden (für Schleifen vorteilhaft):
With Sheets("ProjectStructure").Cells(i, 4)
Einen hab ich noch:
Wenn ein Wert auf mehrere Bedingungen geprüft werden soll, kannst Du "Select Case" verwenden - also etwa:
Select Case .Value
Case "Mr/s"  
    .Value = "='Translation Table'!A159"  
Case "First Name"  
    .Value = "='Translation Table'!A160"  
Case "Surname"  
    .Value = "='Translation Table'!A161"  
End Select
Grüße
bastla
Mitglied: TsukiSan
TsukiSan 28.07.2011 um 12:20:34 Uhr
Goto Top
hallo bastla,

schon klar, dass es ab Doppelbuchstaben lustiger wird.
Da der TO aber definitiv schrieb
, dass die Spallte von B1 bis Z 200 läuft.
war mein Gedanke halt obiger auf die Schnelle.
Die Select Case Methode in seinem Fall macht das ganze optisch noch sauberer. Dem stimme ich auch zu.

Danke und Grüße

Tsuki
Mitglied: bastla
bastla 28.07.2011 um 13:56:09 Uhr
Goto Top
@tsuki
Never mind face-smile - Du hast Dich stärker an der Vorgabe des TO (inkl seines Ansatzes mit "Range("D" & i).Select") orientiert, während ich das etwas stärker verallgemeinern wollte ...

Grüße
bastla
Mitglied: TsukiSan
TsukiSan 28.07.2011 um 23:19:48 Uhr
Goto Top
Hallo bastla,

siehst du - und während wir beide etwas am fachsimpeln sind, hat der TO schon ein grünes Häkchen gesetzt face-smile
Super Arbeit! face-smile

Viele Grüße

Tsuki face-smile
Mitglied: bastla
bastla 29.07.2011 um 09:58:49 Uhr
Goto Top
Hallo Tsuki!
hat der TO schon ein grünes Häkchen gesetzt face-smile
... was immer noch (knapp) besser ist, als gar kein Feedback ... face-wink

Grüße
bastla
Mitglied: Dudelidude
Dudelidude 29.07.2011 um 11:17:24 Uhr
Goto Top
Hey Leute,

sorry aber ich dachte ich hatte mich schon bedankt. Jedenfalls nochmal vielen Dank für eure schnelle und kompetente Hilfe.
Liebe Grüße!

TGI Friday!
Mitglied: bastla
bastla 29.07.2011 um 11:27:03 Uhr
Goto Top
Hallo Dudelidude!

Danke für's Bedanken face-smile - es geht aber mehr darum, für ev andere Hilfesuchende deutlich zu machen, dass ein (bzw welcher) Ansatz funktioniert hat ...

Grüße
bastla