Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1768to1772
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

onkey Variablenübergabe

onkey Variablenübergabe
15.07.2020 10:50:02
Matthias
Hallo Excel-Freunde,
ich habe ein Problem bei der Übergabe einer Variablen (bzw. deren Inhalt) aus einer Prozedur (Find) an eine "Onkey-Prozedur". Beide Prozeduren befinden sich in einem Modul.
Die "modul übergreifende Variable" soll in der Onkey-Prozedur weiter verarbeitet werden.
Konkret handelt es sich hierbei um eine Variable vom Typ Range.
Ihren Inhalt erhält sie aus einer Prozedur (Find) mit einer Find-Funktion, welche innerhalb eines bestimmten Arbeitsblattes in einer Spalte einer Tabelle nach einen bestimmten Begriff sucht und diesen selektiert.
Mit Hilfe von Onkey-Prozeduren soll mit den Pfeiltasten "hoch" und "runter" und den hinterlegten Funktionen Find-Next bzw. Find-Previous dann der nächste bzw. vorherige Begriff gleichen Inhalts gefunden und selektiert werden.
Mit der "Entertaste" wird dann die ausgewählte Zeile in ein anderes Arbeitsblatt beliebiger Zelle übertragen.
Der Aufruf der drei verschiedenen Onkey-Prozeduren erfolgt aus der Prozedur (Find) heraus.
Nach Schrittweiser-Durchlaufprüfung des Makros wird die Suchvariable korrekt in der Prozedur (Find) gefüllt.
Bei der Übergabe der Variablen an die Onkey-Prozeduren ist diese jedoch vom Inhalt "Leer" bzw. "Nothing",
so dass die Find-Next bzw. Find-Previous Funktionen nicht ausgeführt werden können und eine Fehlermeldung erscheint.
Frage:
Ist eine Variablenübergabe an eine Onkey-Methode überhaupt möglich?
Habe bisher keine Beispiele dafür entdecken können.
Für eure Hilfe wäre ich sehr Dankbar.

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

Betreff
Datum
Anwender
Anzeige
AW: onkey Variablenübergabe
15.07.2020 10:51:57
Hajo_Zi
Di Variable wurde nicht nach der ersten Zewile Option Explicit Definiert.

AW: onkey Variablenübergabe
15.07.2020 11:35:14
Matthias
Hallo Hajo_Zi,
die modul-öffentliche Variable wurde ganz oben gleich unter Option Explicit definiert.
Probiere es mal so...
15.07.2020 12:23:49
Case
Hallo, :-)
... der Spur nach: ;-)
Option Explicit
Public Sub Main()
Application.OnKey "ß", "'AusgabeA ""ss""'"
End Sub
Public Sub AusgabeA(ByVal strTMP As String)
MsgBox strTMP
End Sub
Public Sub Main_1()
Application.OnKey "q", "'AusgabeB ""A1:A10""'"
End Sub
Public Sub AusgabeB(ByVal strTMP As String)
MsgBox Range(strTMP).Address
End Sub
Servus
Case

Anzeige
AW: Probiere es mal so...
15.07.2020 18:19:02
Matthias
Hallo Case,
danke für die Antwort.
Ich bekomme leider die Fehlermeldung, dass das Makro nicht ausgeführt werden kann bzw. sich nicht in der Arbeitsmappe befindet.
VBA interpretiert die ganze Codezeile: ..."ß", "'AusgabeA ""ss""'" als ein Makro, welches natürlich nicht existiert.
An der Stelle wo der string: ...""ss""'" bzw. ..""A1:A10""'" steht, müsste man die Variable übergeben können.
Eine alternative Lösung besteht darin die Find-Funktion einfach nochmals in die Onkey-Prozedur zu schreiben.
Dabei findet aber keine Variablenübergabe statt, was ich schade finde.
Ich werde morgen mal meinen Code posten. Vieleicht entdeckt man dann den Fehler.
Gruß
Matthias
Anzeige
AW: Also bei mir funktionieren...
16.07.2020 16:44:57
Matthias
Hallo Case,
die Variante 3 kommt der Lösung schon sehr na.
Kannst du mir ein Beispiel geben bei dem ein Range-Objekt übergeben wird, um sich so z.B. die Adresse der im Augenblick angeklickten Zelle wiedergeben zu lassen?
Ich wäre nie darauf gekommen das man mit Zeichencodes arbeiten muss. =O
Danke
Matthias
Probiere es mal so...
17.07.2020 10:40:19
Case
Hallo, :-)
... der Spur nach: ;-)
ONKEY...
Servus
Case

Anzeige
AW: Probiere es mal so...
21.07.2020 16:54:53
Matthias
Hallo Case,
danke für dein Beispiel.
Habe es jetzt mal in meinen Code integriert.
Die gefundene Zelle wird in die Onkey-Prozedur übernommen.
Leider findet er beim Aufruf von Find.Next bzw. Find.Previous über onkey den Suchbegriff nur "ein" weiteres mal und stopt dann, obwohl der Suchbegriff mehrmals in der Spalte des Arbeitsblattes existiert.
Nachfolgend mein Code für die Suchprozedur.
Der Aufruf der "

Public Sub Leistung_suchen()" erfolgt über eine Userform mit mehreren Checkboxen und Comboboxen  _
in denen man eine bestimmte Leistung (Suchbegriff) auswählt.
Der Suchbegriff wird dann direkt ins Arbeitsblatt in Zelle "A7" geschrieben.
Wieso führt er onkey nur einmalig aus?
Wie kann ich mehrere boolsche Variablen an die "

Public Sub Leistung_übernehmen()" übergeben?
Option Explicit
Dim m_rngZelle As Range
Dim m_bolCheck1, m_bolCheck2, m_bolCheck3, m_bolCheck4, m_bolCheck5, m_bolCheck6, m_bolCheck7,  _
m_bolCheck8, m_bolCheck9, m_bolCheck10, m_bolCheck11, m_bolCheck12, m_bolCheck13, m_bolCheck14, m_bolCheck15, m_bolCheck16, m_bolCheck17, m_bolCheck18, m_bolCheck19, m_bolCheck20, m_bolCheck21, m_bolCheck22, m_bolCheck23, m_bolCheck24, m_bolCheck25, m_bolCheck26, m_bolCheck27, m_bolCheck28, m_bolCheck29, m_bolCheck30 As Boolean
Dim m_strComb1, m_strComb2 As String
Dim m_wkbName As String
Dim m_strAkt As String

Public Sub Leistung_suchen()
Dim i As Integer
Application.Workbooks("Arbeitsmappe.xls").Worksheets("Tabelle1").Activate
With Application.Workbooks("Arbeitsmappe.xls").Worksheets("Tabelle1")
If m_strComb1  "> Bitte auswählen  "> Bitte auswählen 

Public Sub weitersuchen_runter(ByVal strTMP As String)
Set m_rngZelle = Range(strTMP)
With Application.Workbooks("Arbeitsmappe.xls").Worksheets("Tabelle1")
Set m_rngZelle = .Range("A11:A604").FindNext(m_rngZelle)
Range(m_rngZelle, m_rngZelle.Offset(0, 26)).Select
End With
End Sub

Public Sub weitersuchen_rauf(ByVal m_rngZelle As Range)
With Application.Workbooks("Arbeitsmappe.xls").Worksheets("Tabelle1")
Set m_rngZelle = .Range("A11:A604").FindPrevious(m_rngZelle)
Range(m_rngZelle, m_rngZelle.Offset(0, 26)).Select
End With
End Sub

Public Sub Leistung_übernehmen()
Dim strAkt1 As String
Dim strAkt2 As String
Dim wkbName As String
Dim strAdresse As String
Dim Zeile As Long
Dim ZeileFrei As Long
With Application.Workbooks("Arbeitsmappe.xls").Worksheets("Tabelle1")
strAdresse = m_rngZelle.Row
wkbName = .Range("A3").Text
Workbooks(wkbName).Activate
'ab hier erfolgt die Übernahme der Leistungen in Abhängigkeit der ausgewählten Checkboxen
ZeileFrei = 30
For Zeile = 1 To ZeileFrei              '1. Leistung
If m_bolCheck1 = True Then
strAkt1 = .Range("H" & strAdresse).Text
strAkt2 = .Range("I" & strAdresse).Text
If ActiveCell = "" Then
ActiveCell.Value = strAkt1
ActiveCell.Offset(0, 5).Value = "1"
ActiveCell.Offset(0, 7).Value = strAkt2
m_bolCheck1 = False
ActiveCell.Offset(1, 0).Activate
Else
ActiveCell.Offset(1, 0).Activate
End If
End If
Next Zeile
For Zeile = 1 To ZeileFrei              '2. Leistung
If m_bolCheck2 = True Then
strAkt1 = .Range("L" & strAdresse).Text
strAkt2 = .Range("M" & strAdresse).Text
If ActiveCell = "" Then
ActiveCell.Value = strAkt1
ActiveCell.Offset(0, 5).Value = "1"
ActiveCell.Offset(0, 7).Value = strAkt2
m_bolCheck2 = False
ActiveCell.Offset(1, 0).Activate
Else
ActiveCell.Offset(1, 0).Activate
End If
End If
Next Zeile
Windows("Arbeitsmappe.xls").Visible = False       'LV ausblenden
End With
Application.OnKey "{Return}"
Application.OnKey "{Down}"
Application.OnKey "{Up}"
End Sub

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige