Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1248to1252
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Eintrag in xter Position in Bereich

Eintrag in xter Position in Bereich
Peter
Guten Abend
Wie kann ich mittels VBA in einem Spaltenbereich in der x-ten Zelle (zB in der 44. ) einen Wert, ZB 13.5, eintragen? Der Spaltenbereich kann "wandern", deshalb kann nicht eine fixe Zelle angesprochen werden.
Gruß, Peter

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Rückfrage
31.01.2012 20:21:48
Erich
Hi Peter,
wie liegen der Spaltenbereich und die 44 (relative Zeilennummer) denn vor?
(welche Variablen mit welchen Variablentypen?)
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
AW: Rückfrage
31.01.2012 22:34:57
Peter
Hallo Erich
Der Spaltenbereich ist mit "ZAbstime" benannt und enthält zurzeit 56 Zeilen. Damit beispielsweise den Eintrag mit nachfolgender Codezeile in der 44. Zelle eintragen kann, beginnt der Bereich "ZAbstime" in der Tabelle "Cockpit" zurzeit ab Zeile 1. Ich möchte jedoch, dass ich diesen Bereich beliebig nach unten verschieben kann und dann immer noch die einzelnen Zellen, hier die 44. Zelle, ansteuern kann.
Gruss, Peter
If [ZDet_Time] = "JA" Then Sheets("Cockpit").Range(spBuchstabe([ZAbstime].Column) & "44") = Now
Anzeige
AW: hier mal eine Variante ...
01.02.2012 09:11:37
Peter
Hallo Matthias
Danke für den Lösungsansatz.
Gruss, Peter
zwei Vorschläge
01.02.2012 00:29:44
Erich
Hi Peter,
das ginge z. B. nach diesen beiden Varianten:

Sub Peter2()
Dim lngZ As Long
lngZ = 44
Sheets("Cockpit").Range("ZAbstime").Cells(1).Offset(lngZ - 1) = Now
' oder
With Sheets("Cockpit")
.Cells(.Range("ZAbstime").Row + lngZ - 1, .Range("ZAbstime").Column) = Now
End With
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
AW: zwei Vorschläge
01.02.2012 09:11:01
Peter
Hallo Erich
Vielen Dank - ich habe mich für die erste Variante entschieden.
Gruss, Peter
oder gleich -> .Cells(lngZ) = Now
01.02.2012 10:15:32
Matthias
Hallo
Hab mal Erichs Vorschlag aufgegriffen und versucht das Ganze noch kompfortabler zu gestalten.
D.h Du musst im Code nicht immer den ZeilenIndex ändern, sondern kannst es über eine Inputbox eingeben.
Kannst ja mal Testen
Option Explicit
Sub Peter()
Dim lngZ$
lngZ = InputBox("Welche Zeile im Bereich soll benutzt werden", "Index", 48)
If StrPtr(lngZ) = 0 Or lngZ = "" Or Not IsNumeric(lngZ) Then Exit Sub
If Int(lngZ) = 0 Then
If Range("ZAbstime").Cells(lngZ) = "" Then
Range("ZAbstime").Cells(lngZ) = Now
Else
If MsgBox("Die Zielzelle ist NICHT leer!" & vbLf & "Daten überschreiben", vbYesNo, "  A c  _
h t u n g !") = vbYes Then
Range("ZAbstime").Cells(lngZ) = Now
Else
MsgBox "keine Aktion - Abbruch"
End If
End If
Else
MsgBox "Index ausserhalb des Bereiches" & vbLf & "max. Zeilen im Bereich = [ " & Range(" _
ZAbstime").Cells.Count & " ]", vbInformation, "      Error: für Zeile " & lngZ
End If
End Sub

https://www.herber.de/bbs/user/78679.xls
Für eine kurze Rückinfo ob das passt, oder ob evtl. Fehler aufgetreten sind wäre ich dankbar.
Gruß Matthias
Anzeige
AW: oder gleich -> .Cells(lngZ) = Now
01.02.2012 10:32:20
Peter
Hallo Matthias
Danke für dein Beitrag.
In meinem Projekt habe ich über 50 Arbeitsschritte.
An jedem Punkt, bei dem ich einen "Zeitstempel" setzen will, rufe ich die entsprechende

Sub auf.
Z.B. bei Schritt 44
If [ZDet_Time] = "JA" then Call Zeitstempel(44)

Sub Zeitstempel (lngPosition as Long)
Range("ZAbstime").Cells(1).Offset(lngPosition - 1) = Now
End Sub
Somit wird lngPosition immer eine Zahl übergeben
Die Länge des Spaltenbereiches könnte ich noch überprüfen, da unterhalb in der entsprechenden Zeile keine weiteren Einträge stehen, habe ich vorerst darauf verzichtet.
Gruss, Peter
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige