2017-01-31 7 views
0

Ich versuche, ein Benutzerformular zu erstellen, mit dem die Benutzer Probleme aktualisieren können, die in einem bestimmten Blatt (genannt Problemliste) gespeichert sind. Ich habe eine Dropdown-Liste mit Datenüberprüfung erstellt, die es dem Benutzer ermöglicht, den eindeutigen Ausgabenamen aus einer Liste auszuwählen. Ich habe eine Schaltfläche neben dieser Dropdown-Liste erstellt, die das Benutzerformular öffnet und den aus der Dropdown-Liste identifizierten Problemnamen korrekt importiert.Excel VBA - Ziehen Sie Informationen in Benutzerformular, um zu aktualisieren

Was ich herausfinden muss, ist, wenn das Benutzerformular initiiert wird, wie ich es Suchspalte B in meinem Problemlistenblatt habe und welche Zeile das vom Benutzer ausgewählte Problem enthält und die Felder des Benutzers ausfüllen Formular mit den Informationen in den Zeilen CX des Blattes Problemliste.

Was ich versucht habe zu verwenden, ist eine Index-Match-Funktion, aber es war nicht erfolgreich, den Code zum Funktionieren zu bringen. Ein Beispiel dafür, was ich habe mit ist:

Resolved.Value = Application.WorksheetFunction.index 
('Issue List'!$X$2:$X$1000,Application.WorksheetFunction.match 
('Priority Table'!I35,'Issue List'!$B$2:$B$1000,0)) 

Jede Hilfe wäre sehr dankbar.

Vielen Dank im Voraus!

Antwort

1

Wenn Sie Tabellenfunktionen in VBA verwenden, haben Sie immer noch in den Bereichen Sprache mit VBA weitergeben müssen:

Also statt:

'Issue List'!$X$2:$X$1000 

Sie verwenden würden:

Worksheets("Issue List").Range("X2:X1000") 

Und statt:

'Priority Table'!I35 

Verwenden Sie einfach:

Worksheets("Priority Table").Range("I35") 

Beachten Sie, dass Sie auch auf Bereiche von Namen beziehen können, die leichter Codierung machen kann und auch viel sicherer. Wenn Sie Zeilen in Kalkulationstabellen einfügen, aktualisiert Excel Bereiche in keinem VBA-Code automatisch. Ein Verweis auf I35 wird immer I35 sein.

Definieren Sie stattdessen einen Namen für Zelle I35 in Excel als normal, und beziehen Sie sich dann auf den Code.

Zum Beispiel, wenn Sie I35 als „Problem“ nennen

Sie auf die Zelle verweisen kann:

Range("Issue") 

(Wenn es sich um eine globale Variable, die es Standard sein, solange es ist ein eindeutiger Name in der Arbeitsmappe, müssen Sie nicht die Sheets („Priority Table“) Qualifikationsmerkmal verwenden

für weitere Informationen zu dieser Dokumentation finden, wie man Bereiche in Excel von VBA beziehen. https://msdn.microsoft.com/en-us/library/office/gg192736(v=office.14).aspx

Verwandte Themen