PDA

Vollständige Version anzeigen : Spalten, Zeilen - Bezug


SeNf
28.04.2009, 10:35
Mahlzeit,
wenn ich verweise auf ein range objekt zb. range("A1") habe und spalten in die tabele vor A einfüge habe ich ja das problem das der bezug nicht m,ehr stimmt, aus A1 wird ja B1...
wie kann ich das ganze denn umgehen?
Gruß
Steffen

NoNet
28.04.2009, 11:01
Hey,

eine Möglichkeit : Gib der Zelle einen Bereichsnamen (per <Button>Strg</button> <Button>F3</button>) und referenziere die Zelle in VBA über Ihren Namen : Range("DeinName")....

krixxie
28.04.2009, 11:07
Hallo,

ich geb dir einen weiteren Tipp :D

Nutz statt den Buchstaben A,B,C einfach die Funktion "Chr(65)". 65 steht wie bestimmt bekannt für A, 66 für B und so weiter, somit kannst du, wenn du eine Spalte hinzufügst bei der Spalte, die sich nach hinten verrückt (z.b. B zu C) einfach 66+1 machen -> C, wenn du zwei Spalten einfügst -> 66+2 -> Chr(66+2) = D und im Gegenzug bei entfernen einer Spalte 66-1 -> A ;-)

Liebe Grüsse

SeNf
28.04.2009, 15:21
@ NoNet
wenn ich einer spalte (im bsp code "A") so einen berreichsnahmen vergebe kommt in vba eine fehlermeldung...?

Dim fFree2 As Long

fFree2 = Rows.Count
If Cells(fFree2, "A").Value = "" Then
fFree2 = Cells(Rows.Count, "A").End(xlUp).Row
End If

NoNet
28.04.2009, 15:43
Hey Senf,

"A" ist auch ein äusserst schlechter Bereichsname (obwohl selbst DAS bei mir klappt !).

Verwende einen anderen Bereichsname (z.B: "SpalteA").
Du solltest den Bereich dann auch mit RANGE("SpalteA") referenzieren und nicht mit CELLS(fFreeZ,"SpalteA") !!

Alternativ kannst Du eine einzelne Zelle des Bereiches (einer ganzen Spalte) so adressieren :
Dim fFree2 As Long

fFree2 = Rows.Count
If Range("SpalteA")(fFree2).Value = "" Then
fFree2 = Range("SpalteA")(fFree2).End(xlUp).Row
End If

MsgBox fFree2 'Nr. der letzten belegten Zeile ausgeben

SeNf
29.04.2009, 13:04
noch eine frage... :-)
wie kann ich den bezug der spalten und zellen noch auf eigene bereichsnamen umstellen?
beim suchen der freien reihe hats geklappt...
gruß
Steffen


Dim fFree As Long
Dim rngDatFind As Range
Dim lngCounter As Long
Dim Zell As Range

'sucht die lezte freie zeile in spalte A
fFree = Rows.Count
If Range("FREI")(fFree).Value = "" Then
fFree = Range("FREI")(fFree).End(xlUp).Row
End If

'zellen farblos und ohne text setzen

With Range("V7:V" & fFree)
.Value = ""
.Interior.ColorIndex = xlNone
End With

Set rngDatFind = Columns(33).Find("1", LookIn:=xlValues)
For lngCounter = 7 To fFree
If Cells(lngCounter, 33).Value = 1 Then
With Cells(lngCounter, "V")
.Interior.ColorIndex = 37
.Value = "TEST"
End With
End If
Next lngCounter

SeNf
12.05.2009, 06:27
das hat sich auch erledigt,
danke für die antworten
Steffen