Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema RefEdit
BildScreenshot zu RefEdit RefEdit-Seite mit Beispielarbeitsmappe aufrufen

Eintrag in xter Position in Bereich | Herbers Excel-Forum


Betrifft: Eintrag in xter Position in Bereich von: Peter
Geschrieben am: 31.01.2012 20:14:05

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

  

Betrifft: Rückfrage von: Erich G.
Geschrieben am: 31.01.2012 20:21:48

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


  

Betrifft: AW: Rückfrage von: Peter
Geschrieben am: 31.01.2012 22:34:57

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


  

Betrifft: hier mal eine Variante ... von: Matthias L
Geschrieben am: 31.01.2012 23:54:13

Hallo Peter

Mit der 44.Zelle im definierten Namen(Spaltenbereich)

Beispiel:
https://www.herber.de/bbs/user/78674.xls

Gruß Matthias


  

Betrifft: AW: hier mal eine Variante ... von: Peter
Geschrieben am: 01.02.2012 09:11:37

Hallo Matthias
Danke für den Lösungsansatz.
Gruss, Peter


  

Betrifft: zwei Vorschläge von: Erich G.
Geschrieben am: 01.02.2012 00:29:44

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


  

Betrifft: AW: zwei Vorschläge von: Peter
Geschrieben am: 01.02.2012 09:11:01

Hallo Erich
Vielen Dank - ich habe mich für die erste Variante entschieden.
Gruss, Peter


  

Betrifft: oder gleich -> .Cells(lngZ) = Now von: Matthias L
Geschrieben am: 01.02.2012 10:15:32

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) <= Range("ZAbstime").Cells.Count And 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


  

Betrifft: AW: oder gleich -> .Cells(lngZ) = Now von: Peter
Geschrieben am: 01.02.2012 10:32:20

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


Beiträge aus den Excel-Beispielen zum Thema "Eintrag in xter Position in Bereich"