Microsoft Excel

Herbers Excel/VBA-Archiv

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

Range aus aktivierter Zelle als Variable


Betrifft: Range aus aktivierter Zelle als Variable von: kubden82
Geschrieben am: 26.09.2017 08:17:05

Moin,

ich habe ein Makro, dass mir die Zellen sucht, in denen zwei bestimmte Daten stehen (z.B. 04.01.2017 und 10.01.2017). Diese Zellen benötige ich nun für eine Autovervollständigung. D.h. ich ändere die Formel in der ersten "beginn"-Zelle und dann soll er per AutoFill bis zur "ende"-Zelle die Formel ändern.

Hier mein Gesamtmakro:

Sub Finden()

Dim rngbeginn As Range
Dim sFindBeginn As String
Dim beginn As Range
Dim rngende As Range
Dim sFindEnde As String
Dim ende As Range
Dim stdAlt As String

sFindBeginn = InputBox("Anfangsdatum:")
sFindBeginn = CDate(sFindBeginn)
sFindEnde = InputBox("Enddatum:")
sFindEnde = CDate(sFindEnde)
stdAlt = InputBox("alte Tagesstundenzahl:")

Set rngende = Range("AR:AR").Find(What:=CDate(sFindEnde))
rngende.Select
Selection.Offset(rowOffset:=0, ColumnOffset:=-41).Select
' hier müsste der Range der aktuellen Selection an ende übergeben werden

Set rngbeginn = Range("AR:AR").Find(What:=CDate(sFindBeginn))
rngbeginn.Select
Selection.Offset(rowOffset:=0, ColumnOffset:=-41).Select
' hier müsste der Range der aktuellen Selection an beginn übergeben werden

ActiveCell.Replace What:="$H$4/5", Replacement:=stdAlt, LookAt:=xlPart, _
       SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
       ReplaceFormat:=False
'Selection.AutoFill Destination:=Range("&beginn&:&ende&"), Type:=xlFillDefault ' hier wird der  _
nächste fehler sein, da ich beginn und ende so nicht in den Range bekomme
Range("A1").Select

End Sub
Hier die kniffeligen Stellen:

1. hier müsste die Zelle an den Range ende bzw. beginn übergeben werden, damit man damit später arbeiten kann, eine Lösung fehlt mir noch
Set rngende = Range("AR:AR").Find(What:=CDate(sFindEnde))
rngende.Select
Selection.Offset(rowOffset:=0, ColumnOffset:=-41).Select
' hier müsste der Range der aktuellen Selection an ende übergeben werden
2. hier müsste dann mit beginn und ende ein neuer Range gebildet werden
Selection.AutoFill Destination:=Range("&beginn&:&ende&"), Type:=xlFillDefault ' hier wird der nächste fehler sein, da ich beginn und ende so nicht in den Range bekomme
An diesen beiden Stellen komm ich derzeit nicht weiter, vielleicht kann mir einer hier weiter helfen oder einen Denkanstoß geben.

Vielen Dank

  

Betrifft: AW: Range aus aktivierter Zelle als Variable von: kubden82
Geschrieben am: 26.09.2017 09:34:21

mit diesem Code, bin ich schonmal wieder etwas weiter gekommen, aber die neue Selection mit beginn und ende funktioniert nicht:

Sub Finden()

Dim rngbeginn As Range
Dim sFindBeginn As String
Dim beginn As Range
Dim rngende As Range
Dim sFindEnde As String
Dim ende As Range
Dim stdAlt As String

sFindBeginn = InputBox("Anfangsdatum:")
sFindBeginn = CDate(sFindBeginn)
sFindEnde = InputBox("Enddatum:")
sFindEnde = CDate(sFindEnde)
stdAlt = InputBox("alte Tagesstundenzahl:")

Set rngende = Range("AR:AR").Find(What:=CDate(sFindEnde))
rngende.Select
Selection.Offset(rowOffset:=0, ColumnOffset:=-41).Select
Set ende = Selection

Set rngbeginn = Range("AR:AR").Find(What:=CDate(sFindBeginn))
rngbeginn.Select
Selection.Offset(rowOffset:=0, ColumnOffset:=-41).Select
Set beginn = Selection

ActiveCell.Replace What:="$H$4/5", Replacement:=stdAlt, LookAt:=xlPart, _
       SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
       ReplaceFormat:=False
Selection.AutoFill Destination:=Range("&beginn&:&ende&"), Type:=xlFillDefault ' hier wird der  _
fehler sein, da ich beginn und ende so nicht in den Range bekomme
Range("A1").Select

End Sub



  

Betrifft: AW: Datum suchen mit .FIND = schwierig von: Daniel
Geschrieben am: 26.09.2017 09:55:49

Hi

die Datumsuche mit .FIND ist nicht so ganz einfach.
wie der Suchstring für das WHAT geschrieben sein muss, hängt nämlich von der Formatierung der Zellen ab. Außerdem muss beachtet werden, dass im Standart-Datumsformat der Suchstring im amerikanischen Datumsformat geschrieben sein muss.

einfacher ist es, mit Worksheetfunction.Match nach dem Zahlenwert des Datums zu suchen.
Das funktioniert unabhängig von der Formatierung.

sFindBeginn = InputBox("Anfangsdatum:")
ZeileBeginn = Application.Match(CLng(CDate(sFindBeginn)), Range("AR:AR"), 0)
Set rngBeginn = Cells(ZeileBeginn, "AR")
Gruß Daniel


  

Betrifft: AW: Range aus aktivierter Zelle als Variable von: kubden82
Geschrieben am: 26.09.2017 09:49:14

geschafft:

Sub Finden()

Dim rngbeginn As Range
Dim sFindBeginn As String
Dim beginn As Range
Dim rngende As Range
Dim sFindEnde As String
Dim ende As Range
Dim stdAlt As String
Dim bereich As Range

sFindBeginn = InputBox("Anfangsdatum:")
sFindBeginn = CDate(sFindBeginn)
sFindEnde = InputBox("Enddatum:")
sFindEnde = CDate(sFindEnde)
stdAlt = InputBox("alte Tagesstundenzahl:")

Set rngende = Range("AR:AR").Find(What:=CDate(sFindEnde))
rngende.Select
Selection.Offset(rowOffset:=0, ColumnOffset:=-41).Select
Set ende = Selection

Set rngbeginn = Range("AR:AR").Find(What:=CDate(sFindBeginn))
rngbeginn.Select
Selection.Offset(rowOffset:=0, ColumnOffset:=-41).Select
Set beginn = Selection

Set bereich = Range(beginn.Address, ende.Address)

ActiveCell.Replace What:="$H$4/5", Replacement:=stdAlt, LookAt:=xlPart, _
       SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
       ReplaceFormat:=False
Selection.AutoFill Destination:=Range(bereich.Address), Type:=xlFillDefault
Range("A1").Select

End Sub



  

Betrifft: noch nicht ganz geschafft ... von: Matthias L
Geschrieben am: 26.09.2017 10:01:57

Hallo

Du musst da zwingend auch noch eine Fehlerbehandlung einbauen.

Gib mal bei der ersten InputBox einen Text ein, dann rappelts schon,
oder auch wenn Du nur auf Abbrechen klickst.
Also, weitertüffteln ;-)

Gruß Matthias


  

Betrifft: AW: noch nicht ganz geschafft ... von: kubden82
Geschrieben am: 26.09.2017 11:28:22

Hab ich auch gesehen und nun dort eine vorherige Funktion vorgeschaltet, damit läuft es, trotzdem vielen Dank für eure Hilfe


Beiträge aus den Excel-Beispielen zum Thema "Range aus aktivierter Zelle als Variable"