272 Aufrufe
Gefragt in Tabellenkalkulation von peko Mitglied (125 Punkte)
Hallo Helfer!

Colums ("B:D").Select
Selection.ColumnWidth = 5

lässt unter VBA die Markierung der Spalten B bis D zu.

Gibt es auch eine Möglichkeit, die Angabe der Spalten variabel (also abhängig von variablen Zahlenwerten) zu halten? Ich fürchte, das geht nicht.

Wenn doch, dann bitte ich um die frohe Botschaft.

Liebe Grüße
peko

8 Antworten

0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo peko,

schau mal, ob dir das gefällt.

[code]Option Explicit

Sub spaltenmarkieren()
    Dim strS1 As String, strS2 As String
    strS1 = InputBox("Spaltenbuchstabe der Anfangsspalte eingeben")
    strS2 = InputBox("Spaltenbuchstabe der Endspalte eingeben")
    Columns(strS1 & ":" & strS2).Select
    Selection.ColumnWidth = 5
End Sub
[/code]

Gruß
Rainer
0 Punkte
Beantwortet von peko Mitglied (125 Punkte)
Hallo Rainer,
 
danke für deine Antwort. So weit ist das ja in Ordnung.

Ich möchte aber in der Lage sein, die aufgrund einer Bedingung ermittelte Zahl einer Spalte (z.B. 53) so nutzen zu können, dass danach diese und die 4 nächsten Spalten automatisch markiert werden (um zum Beispiel dort automatisch Rahmenlinien zeichnen zu lassen).

Meine Frage ist also:
Kann aus der ermittelten 53 VBA automatisch die Spalten 53 bis 57 markieren?

LG
peko
+1 Punkt
Beantwortet von
Hallo Peko,

klar geht das. z.B.

a = 53
Range(Columns(a), Columns(a + 4)).Select

Gruß Mr. K.
0 Punkte
Beantwortet von
Hier noch eine andere Alternative:

a = 53
Columns(a).Resize(Rows.Count, 5).Select

Gruß Mr. K.
0 Punkte
Beantwortet von
Bei ganzen Spalten kannst Rows.Count natürlich auch weglassen.
Wichtig ist nur das Komma vor der 5, welches aber alternativ auch
durch den eindeutigen Eigenschaftsnamen des zweiten Parameters
ersetzt werden kann:

also:

a = 53
Columns(a).Resize(, 5).Select

oder

a = 53
Columns(a).Resize(Columnsize:=5).Select

a musst du natürlich durch deine berechnete Variable ersetzen.
0 Punkte
Beantwortet von
Hallo Community :-)

Für eine Einrahmung ist eine Selection überflüssig!

Gruß Nighty
0 Punkte
Beantwortet von peko Mitglied (125 Punkte)
Da bin ich aber froh, dass das so einfach geht!

Ich hatte mir schon vorgenommen, die Spaltennummern in Vielfache von 26 (Buchstaben des Alphabets!) und den Rest aufzuteilen, um dann über den ASCII-Code die jeweiligen Spaltenbezeichnungen in Buchstaben zu bilden. Wäre sicher auch gegangen, aber so bleibt mir viel Arbeit erspart.

Vielen Dank an euch alle!

LG
peko
0 Punkte
Beantwortet von
Hallo Peko

Ein Beispiel einer Rahmung!

Gruß Nighty

Ausgehend von zur Zeit der 5 Spalte!

[code]Sub ZellRahmen()
    Dim WksRahmen As Variant
    Dim LetzteZeile As Long
    Dim DeineSpalte As Integer
    DeineSpalte = 5
    LetzteZeile = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
    Range(Cells(1, DeineSpalte), Cells(LetzteZeile, DeineSpalte + 4)).Borders(xlDiagonalDown).LineStyle = xlNone
    Range(Cells(1, DeineSpalte), Cells(LetzteZeile, DeineSpalte + 4)).Borders(xlDiagonalUp).LineStyle = xlNone
    For Each WksRahmen In Array(xlEdgeLeft, xlEdgeTop, xlEdgeBottom, xlEdgeRight, xlInsideVertical, xlInsideHorizontal)
        Range(Cells(1, DeineSpalte), Cells(LetzteZeile, DeineSpalte + 4)).Borders(WksRahmen).LineStyle = xlContinuous
    Next WksRahmen
End Sub[/code]
...