Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1132to1136
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

Benötige Hilfe für VBA-Schleife | Herbers Excel-Forum

Benötige Hilfe für VBA-Schleife
31.01.2010 16:49:35
Martin S.

Liebe Excel-Profis,
ich habe eine Liste mit zwei Spalten (Spalte 1 mit Festnetzvorwahlen und Spalte 2 mit den dazugehörigen Orten) in ein Array eingelesen:


Dim ArrVorwahlen As Variant
ArrVorwahlen = ThisWorkbook.Worksheets("Vorwahlen").Range("Vorwahlen").Value

Nun möchte ich gerne eine Function schreiben, über die ich die Ortsherkunft von Festnetznummer abfragen kann:
Sub test()
MsgBox Ortsvorwahl("0301234567") 'Beispiel für Potsdam
End Sub
Public Function Ortsvorwahl(TelefonNr As String) As String
'Hier sollte das Array durchsucht und der richtige Ort gefunden werden
'Durchsucht wird  i = 1 to Ubound(ArrVorwahlen, 1)
'Treffer: Ortsvorwahl = ArrVorwahlen(i, 2)
End Function

Da die Exceldatei mit den Ortsvorwahlen und Orten leider größer als 300 KB ist, konnte ich diese nur als Textdatei (im CSV-Format) hochladen: https://www.herber.de/bbs/user/67661.txt
Ich befürchte, dass hier eine in sich verschachtelte und/oder rekursive Schleife/Funktion geschrieben werden muss, da die Vorwahlen ja unterschiedlich lang sind und daher nicht so einfach verglichen werden können. Daher wäre ich für Hilfe sehr dankbar!
LG Martin

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Benötige Hilfe für VBA-Schleife
31.01.2010 16:57:59
Josef Ehrensberger
Hallo Martin,

wozu für eine so leichte Aufgabe eine UDF?
AW: Benötige Hilfe für VBA-Schleife
31.01.2010 17:24:14
Martin S.
Hallo Josef,
vielen Dank für Deine Hilfe. Das Problem ist, dass mir die Nummern nur am Stück (ohne Trennung der Vorwahl von der Festnetznummer) vorliegen. Hätte ich die Vorwahlen separat zu den Telefonnummern, wäre das alles sogar für mich kein Problem gewesen.
Mir ist eine Makrolösung lieber, da ich andere Daten auch über eine UserForm verwalte und die dazugehörigen Orte in der UF anzeigen lassen möchte.
Ich bin dir für deine Hilfsbereitschaft trotzdem sehr dankbar!
LG Martin
AW: Benötige Hilfe für VBA-Schleife
31.01.2010 17:31:09
Josef Ehrensberger
Hallo Martin,

du schreibst "habe eine Liste mit zwei Spalten", was stimmt den nun ?

Gruß Sepp
Anzeige
AW: Benötige Hilfe für VBA-Schleife
31.01.2010 17:41:25
Martin S.
Hallo,
ich hatte gehofft, dass ich mich verständlich ausgedrückt hätte. Mit "Spalte 1 mit Festnetzvorwahlen und Spalte 2 mit den dazugehörigen Orten" habe ich mich auf die Quelle bezogen, aus denen ich die Orte "zurückverfolgen" kann. Aber die Festnetznummern selbst liegen mir leider (wie in dem Beispiel für Potsdam mir Tel.-Nr. "0301234567") nur am Stück vor.
LG Grüße
Tausend Dank, das läuft super!
31.01.2010 19:41:01
Martin S.
Hallo Josef,
vielen lieben Dank für Deine Mühe, das läuft super! Du hast mir wirklich sehr geholfen!
Ich wünsche Dir noch einen schönen Abend!
Viele Grüße
Martin
Anzeige
und falls es doch mit Makro sein soll...
31.01.2010 17:11:59
MichaV
..dann vielleicht so:
Option Explicit
Sub test()
Dim ArrVorwahlen
Dim ArrOrte
Dim i As Long
ArrVorwahlen = WorksheetFunction.Transpose(Range("Vorwahlen").Value)
ArrOrte = WorksheetFunction.Transpose(Range("Orte").Value)
i = WorksheetFunction.Match("030", ArrVorwahlen, 0)
MsgBox ArrOrte(i)
End Sub
Gruss Micha
AW: und falls es doch mit Makro sein soll...
31.01.2010 17:31:33
MichaV
...für zusammengesetzte Nummern (gem. Deiner Antwort an Sepp)

i = WorksheetFunction.Match("03317473221", ArrVorwahlen, 1)  '<--nur eine kleine Änderung

Gruss- Micha
Sorry, aber ich komme trotzdem nicht weiter...
31.01.2010 18:06:15
Martin S.
Hallo Micha,
vielen Dank für deine Geduld & Hilfsbereitschaft. Vermutlich mache ich einen dummen Fehler, denn ich bekomme es trotzdem nicht hin. Bitte sieh dir mal meinen Code an:
Public Function Ortsvorwahl(TelefonNr As String) As String
Dim ArrVorwahlen As Variant
Dim i As Integer
ArrVorwahlen = ThisWorkbook.Worksheets("Vorwahlen").Range("Vorwahlen").Value
i = WorksheetFunction.Match(TelefonNr, ArrVorwahlen, 1)
Ortsvorwahl = ArrVorwahlen(i, 2)
End Function
Sub test()
MsgBox Ortsvorwahl("03451234567")
End Sub
LG Martin
Anzeige
AW: Sorry, aber ich komme trotzdem nicht weiter...
31.01.2010 18:09:30
MichaV
öhm, Du hast aber schon meine erste Antwort gelesen, oder? Nimm den ganzen Code und ändere die eine Zeile. Ich bin davon ausgegangen dass Du in einer Spalte alle Vorwahlen und in der anderen Spalte die dazugehörigen Orte hast.
Vorwahl ist von Rufnummer NICHT getrennt
31.01.2010 17:36:03
Martin S.
Hallo Micha,
vielen lieben Dank für deine Makro-Lösung. Leider geht deine Lösung nicht, da ich aus der Festnetznummer nicht die Trennung von der Vorwahl und der Rufnummer vorliegen habe. Da Vorwahlen und Rufnummern unterschiedlich lang sein können, müssen die Zahlen (vermutlich einzeln) von links nach rechts verglichen werden. Dass das Array bereits nach Vorwahlen sortiert ist macht es eventuell einfacher.
LG Martin
Anzeige
woher soll Excel denn die Vorwahl kennen ?
31.01.2010 18:58:27
Matthias L
Hallo
Habe diesen Beitrag auch verfolgt.
aber:
woher soll Excel denn die Vorwahl kennen ?
woher soll Excel denn die Länge der Vorwahl kennen ?
Ob es Dir hilft weiß icht nicht, aber ein Versuch ist es ja wert.
Die Profis schmunzeln jetzt sicher, aber egal ;o)
Ich denke also, Du brauchst unbedingt eine Liste aller Ortsvorwahlen
Ob das dann aber auch zuverlässig funktioniert, habe ich nicht getestet.


Userbild
https://www.herber.de/bbs/user/67663.xls
Gruß Matthias
Anzeige
AW: woher soll Excel denn die Vorwahl kennen ?
31.01.2010 19:22:28
MichaV
hehe, woher kennt denn Dein Telefon die Vorwahlen? Drückst Du immer auf die Leertaste wenn Du die Vorwahl eingegeben hast?
Sachtmal, hat eigentlich irgendjemand mein (bzw. Sepps) Vorschlag ausprobiert?
Gruss- Micha
Problem gelöst!
31.01.2010 19:53:00
Martin S.
Hallo,
ich bedanke mich bei allen, die versucht haben mir zu helfen.
Sepp hat mein Problem perfekt gelöst: https://www.herber.de/forum/messages/1134652.html
@Matthias: Die Liste mit den Ortsvorwahlen hatte ich doch bereits in meine Fragestellung als CSV-Datei (im Textformat) hochgeladen gehabt. Ich wusste leider nicht, wie ich die - unterschiedlich langen Vorwahlen - mit der Telefonnummer abgleiche, da mir von der Festnetznummer keine Trennung von Vorwahl und Rufnummer vorliegt.
Allen noch einen schönen "Rest-Sonntag"!
Martin
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige