Inputbox folgt Index
#1
Hallo, 

ich habe eine Tabelle die ich über mehrere Indexfunktionen mit Daten befülle und dann einige Berechnungen macht.
Ich hatte dazu hier schon mal das Eingabezellen an Drehfeld koppeln. Dafür habe ich mir ja eine UF erstellt die auf eine Hilfstabelle zugreift und dann Per Index der Wert zurückkommt.

Jetzt bin ich hier gerade auf die Inputbox gestossen, dazu hätte ich eine Frage.
 Ist es möglich, das ich in Tabelle1 in eine Zelle klicke( diese holt sich per Index ihren Inhalt aus Tabelle2), das eine Inputbox geöffnet wird, und wenn ich dort einen Wert eingebe das in die entsprechende Zelle in Tabelle2 eingetragen wird?

Das mit der UF und den einzelnen Macros funktioniert zwar ganz gut, aber könnte noch verbessert werden^^
Zumal es jetzt schon knapp 20 Zeilen sind, die ich per UF füttere.
Top
#2
???
[Bild: attachment-190.gif]
Gruß Günter
aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
Top
#3
Hallo

ich habe mit meinem Code mal "ins Blaue geraten" und hoffe ich liege richtig.  Dann sieht es so aus:
Ich gehe davon aus das Tabelle1 aktiv isti und aus Tabelle2 der Wert in der gleichen Zeile zu holen ist.
Weil ich nicht weiss ob die Eingabe Text oder Zahl ist habe ist für die Vaiablen Variant henommen.
Die richtige Spalte muss ggf. noch angepasst werden, bei mir m Beispiel ist es Spalte "A" 

mfg  Gast 123

Code:
Sub InputBox_Eingabe()
Dim Eingabe As Variant, Wert As Variant
'ıch gehe davon aus das "Tabelle1" aktiv ist!!
Zeile = ActiveCell.Row  'in Tabelle1
'Wert aus Tabelle2 in gleicher Zeile holen (Spalte A)
Wert = Worksheets("Tabelle2").Cells(Zeile, "A").Value

Eingabe = InputBox("Bitte Wert eingeben", , Wert)
If Eingabe <> Empty Then _
  Worksheets("Tabelle2").Cells(Zeile, "A") = Eingabe
End Sub
Top
#4
Hallo,

die Tabellen sind nicht identisch aufgebaut, und sind auch per Drehfeld sozusagen dynamisch.
Ausschnitt Tabelle 1:

Arbeitsblatt mit dem Namen 'TBVC'
 M
220.6.17
3Dienstag
4 
50
60
70
8-6323
9 
10-432
110

ZelleFormel
M2='opt. Übersicht'!A8+B3
M3=TEXT(M2; "TTTT")
M5=INDEX(Termineingabe!$E$41:$E$162;VERGLEICH(M2;Termineingabe!$C$41:$C$104;0);1)
M6=INDEX(Lieferungen!$E$5:$E$888;VERGLEICH(M2;Lieferungen!$C$5:$C$888;0);1)
M7=M6*72
M8=L8+M7-M5
M10=L10+M11+M15+M13-M7
M11=INDEX(Lieferungen!$Y$5:$Y$888;VERGLEICH(M2;Lieferungen!$C$5:$C$888;0);1)
Diese Tabelle wurde mit Tab2Html (v2.5.0) erstellt. ©Gerd alias Bamberg


In diesem Fall möchte ich zB. in Zelle M6 klicken, eine Inputbox geht auf, und wenn ich dort einen Wert eingebe soll dieser in der Passenden Zelle der anderen Tabelle landen.(Diese ist statisch und beinhaltet nur das datum und die entsprechende Spalte für die Werte)

Ich hoffe jetzt kann man verstehn was ich meine.
Top
#5
Gibt es da keine andere Möglichkeit?
Top
#6
Hallo,

der Gast123 hat doch einen Lösungsansatz mit Inputbox gepostet. Das hast Du in Deiner Frage gewünscht. Was ist daran falsch?

Zitat:Gibt es da keine andere Möglichkeit?

Sicher. Du kannst z.B. was in eine Zelle schreiben und das dann auf Knopfdruck verarbeiten. Oder ... Aber wie gesagt, da wäre zum einen die Frage, was bei der Inputbox nicht passt, und zum anderen, was für eine Möglichkeit suchst Du denn noch wenn Du nun doch keine Inputbox willst?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#7
Hallo, ja Gast123 hat einen Lösungsvorschlag gepostet. Aber der war mit der Vorraussetzung das die Tabellen gleich aufgebaut sind. Und das sind sie nicht.

Ich habe  Tabelle1 die mir dynamisch den Bereich heute -7Tage +20Tage horizontal anzeigt, den Bereich kann ich zusätzlich per Drehfeld scrollen. Diese zieht sich Momentan per Index einige Zahlen, die ich per UF in die andere Tabelle2 schreibe(diese ist Vertikal). Das funktioniert zwar, aber ist doch ein wenig umständlich.

Besser wäre, ich klicke in Tabelle1 in eine Zelle, und ich habe direkt die Möglichkeit, einen Wert in die per Index angezeigte Zelle der Tabelle2 schreiben. Ob nun per Inputbox oder wie auch immer. Keine Ahnung was es da noch für Möglichkeiten gibt.

Ich dachte, zb das der Code der IB erkennt auf welche Quellzelle sich die Zelle bezieht und sich diese Zelle als Ziel für den eingegebenen Wert setzt.
Top
#8
Hallöchen,

ja, die genaue Beschreibung von Fehlern oder Abweichungen zur Aufgabenstellung oder zum Ergebnis ist genau der Punkt.

Natürlich gilt das mit der genauen Beschreibung auch schon bei der Aufgabenstellung. Die Info mit den UF ist für die Aufgabe nicht relevant, freut ggf. die User, die dazu beigetragen haben, dass das läuft. Ansonsten verwirrt das eher. Ebenso das Drehfeld ...

Im Prinzip ist neben der Inputbox die grundlegende Aufgabe hier, die INDEX - Formel im VBA nachzubilden, um im VBA auch auf die gewünschte Zelladresse im anderen Blatt zu kommen.

Mal sehn, was sich da machen lässt. Ich bin jetzt aber erst mal bis ca. heute Abend offline. Vielleicht
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#9
Hallöchen,

im Prinzip könnte man das so lösen:

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'Variablendeklaration - Range
Dim rngCell As Range, strCell As String, strSheet As String
'Wenn die Klickzelle M5. M6 oder M11 ist, dann
If Target.Address = "$M$5" Or Target.Address = "$M$6" Or Target.Address = "$M$11" Then
 'Zelladresse anhand Formel ermitteln
 strCell = Application.Evaluate("=ADDRESS(ROW(" & Replace(Cells(6, 13).Formula, "=", "") & "),COLUMN(" & Replace(Cells(6, 13).Formula, "=", "") & "))")
 'Blattauwahl entsprechend gewaehlter Zeile
 Select Case Target.Row
   'Bei Zeile 5
   Case 5: strSheet = "Termineingabe"
   'Bei Zeile 6 und 11
   Case 6, 11: strSheet = "Lieferungen"
 'Ende Blattauwahl entsprechend gewaehlter Zeile
 End Select
 'Zelle zuweisen
 Set rngCell = Sheets(strSheet).Range(strCell)
 'Meldung mit Adresse ausgeben
 MsgBox rngCell.Address 'hier die Inputbox
'Ende Wenn die Klickzelle M5. M6 oder M11 ist, dann
End If
'Ende Eingabemodus
Cancel = True
End Sub

Du müsstest nun statt der Meldung eine Inputbox programmieren und die Eingabe dann in die Zelle rngCell übertragen.
Den Code könnte man noch einfacher schreiben. Man bräuchte nicht unbedingt die komplette Formel mit ...Evaluate auszuwerten, der Vergleich würde reichen. Aber, ehe ich die Formel auseinanderklabüsere oder anders suche ...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#10
Hallo,

habe gerade den Code mal ausprobiert. Habe es auch mit der Inputbox soweit hinbekommen. Aber leider gibt die MSG immer die selbe Zelle aus. Und zwar die die bei M6 richtig wäre. Also betrifft das auch die Inputbox. 

Ich benötige auch nur die Zeilen die als Index auf Lieferungen zugreifen, also in diesem Fall Zeile 6 und 11  allerdings noch 8 andere Zeilen in dieser Tabelle. Spaltenbereich F bis BB.
In einer weiteren Tabelle, die eine ähnliche Funktion erfüllt, da wären es sogar momentan 15 Zeilen 


Wie würde ich den bereich erweitern müssen? Jetzt würde das ja nur bei 3 Zellen gehen.
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste