Pyramide konstruieren

killercoolaid

Grünschnabel
Hallo zusammen,
jetzt habe ich (noch) ein Problem:

Ich möchte in VBA eine Pyramide programmieren.
Sie soll mit dem Befehl debug.print ausgegeben werden in der Form:
AAABAAA
AABBBAA
ABBBBBA

Mit unten geschriebenen Code bekomme ich zwar das A und das zählt auch schön hoch.
Das B allerdings bekomme ich nicht hin.
Code:
varA = "A"
varB = "B"
For k = 1 To 3
    Debug.Print varB + varA
    varA = varA + "AA"
    varB = ?
Next k
Ich habe zuerst gedacht, dass ich varB = varB - "B" sagen kann, aber das ist offensichtlich falsch.
Weiß jemand von Euch vielleicht eine Lösung, wie ich in der Schleife das B runterzählen kann?
momentan sehe ich nur:
A
AAA
AAAAA
wenn ich das Prog laufen lasse.

Mfg killercoolaid
 
Hi,
kenne mich zwar mit Visual Basic nicht so aus, daher könnten da nun ein paar Syntax-Fehler drin sein, aber generell würde ich es so machen:
Code:
varA = "AAA"
varB = "B"
for k= 1 to 3
     Debug.Print varA + varB + VarA
     var B = varB +"BB"
     varA = varA.substring(0,varA.Length-1)
next k

*grüssle*
MeinerEiner
 
So mal als kleiner Beispielcode:
Visual Basic:
Private Sub Command1_Click()
 Dim cRows As Integer, cCols As Integer, tText As String
 'Hier leg ich die Zeilen und Spalten fest, du kannst die natürlich auch über Textboxen eingeben lassen
 cRows = 3
 cCols = 7
 For cnt = 1 To cRows
  tText = ""
  tText = tText & getChars("A", Int((cCols - (cnt - 1) * 2) / 2))
  tText = tText & getChars("B", Int((cnt - 1) * 2 + 1))
  tText = tText & getChars("A", Int((cCols - (cnt - 1) * 2) / 2))
  Me.Print tText
 Next cnt
End Sub
Private Function getChars(ByVal cChar As String, ByVal cAnzahl As Integer) As String
 cChar = Left(cChar, 1)
 getChars = Replace(Space(cAnzahl), Chr(32), cChar)
End Function
Hab mir eine kleine Funktion dazu geschrieben, die mir einen String mit einem beliebigen (durch den Aufruf festgelegten) Buchstaben in einer beliebigen (beim Aufruf festgelegten) Länge zurückgibt.


Der Doc!
 
Danke für die Antworten.
Es klappt wie am Schnürchen.
Sorry, dass ich mich erst jetzt melde, musste noch in eine Besprechung.

mfg killercoolaid
 
Eine Alternative wäre die Verwendung der String-Funktion. Mit der kannst du eine bestimmte Anzahl an gleichen Zeichen hintereinander erstellen.
Hier ein Beispiel:
Visual Basic:
Dim intA As Integer
Dim strB As String
Const Pyramidenbreite As Integer = 7

For intA = 1 To Pyramidenbreite Step 2
    strB = VBA.String$((Pyramidenbreite - intA) / 2, "B")
    Debug.Print strB & VBA.String$(intA, "A") & strB
Next
 
Zurück