Microsoft Excel

Herbers Excel/VBA-Archiv

kurze frage zur spaltenüberschrift in vba

Betrifft: kurze frage zur spaltenüberschrift in vba von: bernd
Geschrieben am: 05.09.2004 23:01:22

hallo zusammen,

ich habe eine kurze frage:

wenn ich in spalte A1 schreibe: =Spalte(AI3), erhalte ich 35
kann ich nun im vba auch erreichen, dass er in A1 ="AI" schreibt statt 35 ?

vg
bernd

  


Betrifft: spaltenüberschrift per Worksheet_Change ändern von: Beate Schmitz
Geschrieben am: 05.09.2004 23:08:22

Hallo Bernd,

füge dieses Makro ins Codefenster der Tabelle, wenn AI3 sich ändert, springt der Wert in A1 entsprechend um:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$AI$3" Then
Cells(1, 1).Value = Target.Value
End If
End Sub


Gruß,
Beate


  


Betrifft: AW: spaltenüberschrift per Worksheet_Change ändern von: Udo
Geschrieben am: 05.09.2004 23:35:55

Bravo, du steigerst dich!

Udo


  


Betrifft: da habe ich mich mißverständlich ausgedrückt... von: bernd
Geschrieben am: 05.09.2004 23:20:56

...
ich habe gerade folgende formel:

...
j=35

sheets("tabelle").range("a1".value = COLUMN(j)

hier soll nun in a1 nicht 35 sondern AI stehen...


  


Betrifft: AW: da habe ich mich mißverständlich ausgedrückt... von: Bert
Geschrieben am: 05.09.2004 23:34:04

Sub Spalte()
Dim j As Integer, SB As String
j = 35
If j < 27 Then
  SB = Left(Columns(j).Address(0, 0), 1)
Else
  SB = Left(Columns(j).Address(0, 0), 2)
End If
[a1] = SB
End Sub


Bert


  


Betrifft: Spalte auslesen von: Beate Schmitz
Geschrieben am: 05.09.2004 23:46:11

Hallo Bernd,

ich habe eine Funktion, die gibt den Spaltenbuchstaben zurück.
Also steht in A1 = ColumnLetter(35) wird AI zurückgegeben.
Es geht natürlich auch dynamischer, wenn die 35 z.B. aus Zelle B1 kommt, dann
A1 = ColumnLetter(B1)

Vielleicht hilft dir die Funktion bei den Überlegungen zu deinem Makro, es müssen nämlich Kriterien beachtet werden, wenn es über Spalte Z (=Spalte26) hinaus geht, weil ja dann 2 Buchstaben kombiniert werden müssen:

Function ColumnLetter(ColumnNumber As Integer) As String
  If ColumnNumber > 26 Then

    ' 1st character:  Subtract 1 to map the characters to 0-25,
    '                 but you don't have to remap back to 1-26
    '                 after the 'Int' operation since columns
    '                 1-26 have no prefix letter

    ' 2nd character:  Subtract 1 to map the characters to 0-25,
    '                 but then must remap back to 1-26 after
    '                 the 'Mod' operation by adding 1 back in
    '                 (included in the '65')

    ColumnLetter = Chr(Int((ColumnNumber - 1) / 26) + 64) & _
                   Chr(((ColumnNumber - 1) Mod 26) + 65)
  Else
    ' Columns A-Z
    ColumnLetter = Chr(ColumnNumber + 64)
  End If
End Function


Gruß,
Beate


  


Betrifft: danke beate, es funktioniert super von: bernd
Geschrieben am: 06.09.2004 07:57:20

mit der routine *freu*


  


Betrifft: super vielen dank von: bernd
Geschrieben am: 05.09.2004 23:40:24

:-)