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 ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen

Matrix in anderem Blatt als Range speichern


Betrifft: Matrix in anderem Blatt als Range speichern von: Denis Gelb
Geschrieben am: 16.08.2016 11:25:23

Hallo zusammen,

nachdem ich mich seit gestern Mittag damit rumschlage und auch Google mir keine vernünftige Lösung liefert, frage ich doch endlich mal nach... Ich möchte einen Bereich in einem anderen Tabellenblatt einer Ursprungsdatei per Inputbox markieren (Inputbox, weil sich die jeweilige Ursprungsdatei ständig in ihrem Aufbau ändert) und diese Eingabe als Range abspeichern. Soweit, so gut. Aber wenn ich dieses Range-Objekt später ansprechen will, klappt es nicht, geschweige denn, das Range in einer Formel zu verwenden....

bisheriger Code:

Sub MonatZuWoche()
'
' MonatZuWoche Makro
'
Dim FCBereich As Range

...

Dim FCBereich As Range

...

Set FCBereich = Application.InputBox(prompt:="Forecast markieren" & vbCr & "(inkl. Überschriften)", Type:=8)
wird per Maus in Tabellenblatt1 ausgewählt, beispielsweise $J$2:$Q$32

Sheets.Add After:=Sheets(Sheets.Count)

FCBereich.Select
(wird in Tabellenblatt 2 eingegeben) Laufzeitfehler 1004: Select-Methode des Range-Objektes konnte nicht ausgeführt werden.

und wenn ich schon schreibe... wie kann ich so ein Range anschließend in eine Formel einbauen? die folgende scheint auch nicht zu funktionieren (Formel an sich funktioniert, aber wenn ich das aufzeichne, will ich den aufgezeichneten Bereich durch das Range-Objekt ersetzen weil sich das wie gesagt ständig ändert)

ActiveCell.FormulaR1C1 = _
"=HLOOKUP(MONTH(R1C)," & FCBereich & ",ROW(RC[-1])-1,FALSE)/DAY(DATE(YEAR(R1C),MONTH(R1C)+1,1)-1)"


ich hoffe ich konnte einigermaßen ausdrücken wo mein Schuh grade drückt

  

Betrifft: AW: Matrix in anderem Blatt als Range speichern von: Michael (migre)
Geschrieben am: 16.08.2016 11:38:05

Hallo!

Wenn Du den aus der Inputbox gewählten Bereich zuweist, weist Du ja einen Bereich auf einem ganz konkreten Blatt zu - d.h. Blatt1!A1:D2 kann natürlich nicht im Blatt2!A1:D2 ausgewählt werden.

Du musst also die reine Zelladresse Deines zugewiesenen Bereichs verwenden, schematisch:

Sub a()

    Dim DerBereich As Range
    
    Set DerBereich = Application.InputBox(prompt:="Bereich wählen", Type:=8)

    Sheets.Add
    With ActiveSheet
        .Range(DerBereich.Address).Select
    End With

End Sub
Genauso dann in einer Formel:
Cells(7, 1).FormulaLocal = "=Anzahl2(" & DerBereich.Address & ")"
LG
Michael


  

Betrifft: AW: Matrix in anderem Blatt als Range speichern von: Denis Gelb
Geschrieben am: 16.08.2016 11:59:20

Hallo Michael,

genau das ist es doch was ich möchte. Wenn ich FCBereich anspreche soll er sich immer auf Blatt1 beziehen. in deinem Beispiel markiert er jetzt die Felder in Blatt2... aber es ist schon mal schön, dass keine Fehlermeldung kommt :-)


  

Betrifft: AW: Matrix in anderem Blatt als Range speichern von: Michael (migre)
Geschrieben am: 16.08.2016 12:27:29

Hallo!

Ich lasse jetzt mal dahingestellt, warum Du Bereich auswählen (.select) wilsst - das ist fast nie notwendig.

Aber auf Deine Frage bezogen, wenn Du den per Inputbox gewählten Bereich immer auf Blatt1 wählen willst, muss dieses Blatt natürlich auch aktiv sein:

Sub b()

    Dim r As Range
    
    Set r = Application.InputBox(prompt:="Bereich wählen", Type:=8)
    
    r.Select
    
    Sheets.Add
    
    With Worksheets("Tabelle1")
        .Activate
        .Range(r.Address).Select
    End With

End Sub
LG
Michael


  

Betrifft: AW: Matrix in anderem Blatt als Range speichern von: Denis Gelb
Geschrieben am: 16.08.2016 12:39:17

ich hab das select der Kontrolle halber eingebaut, damit ich sehen kann ob er überhaupt die richtigen Zellen anspricht. Aber das Aktivieren ist mal wieder vollkommen in meinem Kopf untergegangen....

wie sähe das den dann in der Formel aus? also wenn ich innerhalb einer Formel, die in Blatt 2 steht, den Bereich aus Blatt1 in Form des Range-Objektes auswählen will (als Matrix für einen WVerweis)?


  

Betrifft: AW: Matrix in anderem Blatt als Range speichern von: Michael (migre)
Geschrieben am: 16.08.2016 12:57:51

Hallo,

Sub b()

    Dim r As Range
    
    Set r = Application.InputBox(prompt:="Bereich wählen", Type:=8)
    
    'Bereich auf Blatt 1 auswählen
    With Worksheets("Tabelle1")
        .Activate
        .Range(r.Address).Select
    End With

    'Bereich im Blatt 2 in Formel nutzen (hier zB in A5)
    With Worksheets("Tabelle2")
        .Cells(5, 1).FormulaLocal = "=WVERWEIS(A4;Tabelle1!" & r.Address & ";2;FALSCH)"
        'oder alternativ...
        .Cells(5, 1).FormulaLocal = "=WVERWEIS(A4;" & Worksheets("Tabelle1").Name & "!" & r. _
Address & ";2;FALSCH)"
    End With

End Sub
LG
Michael


  

Betrifft: AW: Matrix in anderem Blatt als Range speichern von: Matthias L
Geschrieben am: 16.08.2016 11:40:04

Hallo

Probiers mal die Zelladresse als String-Übergabe

Option Explicit
Sub MonatZuWoche()
' MonatZuWoche Makro
Dim FCBereich$
 FCBereich = Application.InputBox(prompt:="Forecast markieren" & vbCr & "(inkl. Überschriften)", _
 Type:=8).Address
 'wird per Maus in Tabellenblatt1 ausgewählt, beispielsweise $J$2:$Q$32
 Sheets.Add After:=Sheets(Sheets.Count)
 ActiveSheet.Range(FCBereich).Select
End Sub

evtl geht der Druck im linken Schuh damit schon weg ;-)

Gruß Matthias


  

Betrifft: AW: Matrix in anderem Blatt als Range speichern von: Denis Gelb
Geschrieben am: 16.08.2016 12:20:01

da markiert er aber die entsprechenden Felder in Blatt2. Er soll sich aber auf die Felder in Blatt1 beziehen....


  

Betrifft: AW: Matrix in anderem Blatt als Range speichern von: Fennek
Geschrieben am: 16.08.2016 11:43:12

Hallo,

hier ein Beispiel, wie String (aus Inputbox) als Range-Adresse übergeben werden.

https://www.herber.de/bbs/user/107646.xlsm

mfg


Beiträge aus den Excel-Beispielen zum Thema "Matrix in anderem Blatt als Range speichern"