Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Variable Hochzählen

Mitglied: Hummel85

Hummel85 (Level 1) - Jetzt verbinden

10.11.2006, aktualisiert 23.11.2006, 8759 Aufrufe, 9 Kommentare

Der Titel ist nicht sehr gut gewählt aber mir fällt da immer nicht viel ein.

Guten Morgen,

ich bin schon wieder fast am verzweifeln. Ich denke mir immer es muss doch gehen aber mir fehlt absolut der Denkansatz.

Also ich möchte, eine bestimmte Anzahl von Zellen auslesen. Diese in eine Variable speichern aber nur wenn der wert nicht schon existiert.

Um das ganze zu verdeutlichen. Ich habe sagen wir mal 200 Zellen. Wo 30 verschieden werte vorkommen( Buchstaben und Zahlen). ich möchte jetzt alle werte auslesen und diese in einer variable speichern. Aber nur wenn diese noch nicht gespeichert wurde. Wie ich werte auslesen kann und diese speichern kann weiß ich schon. Mein Problem ist nur. Wie kann ich den:

1. wenn ich ein wert in einer Variable gespeichert habe einfach die Variable Hochzählen?
( bsp. txt_1 , txt_2 , txt_3 .......)

2. wenn ich den von mir aus schon 20 werte gespeichert habe kontrollieren ob der nächste wert nicht schon existiert. Wie gesagt ich habe z.b. 200 Zellen mit werten und 30 davon sind unterschiedlich. Ich möchte eine liste mit txt_1 - txt_30.

3. die erstellten variablen global dimensionieren. so das ich diese in einem Formular ausgeben lassen kann.

So ich hoffe ihr habt alles verstanden und könnt mir helfen.
Mitglied: bastla
10.11.2006 um 10:15 Uhr
Hallo Hummel85!

Vielleicht fangen wir am anderen Ende an: Was machst Du dann konkret mit den Ergebnissen in der (den) Variable(n)?

Grüße
bastla
Bitte warten ..
Mitglied: Hummel85
10.11.2006 um 10:33 Uhr
Also ich möchte diese z.b. 30 variablen in einem Formular ausgeben( in einem Bezeichnungsfeld) mit Textfeld daneben. Dann kann jeder die Übersetzung eintragen. Es geht darum das ich ini Dateien erzeuge und die Excel Tabelle ist in deutsch. Die Excel Datei darf auch nicht verändert werde. Also habe ich mir überlegt dass wenn jemand die Ini Datei auf Englisch haben möchte, er diese auch übersetzen muss. Eine Statische Übersetzung kommt nicht in Frage weil es zu viel Aufwand währe das Makro dann zu pflegen, das kann sich ja wöchentlich ändern.

Ich hoffe das reicht an Infos.

Gruß Sebastian
Bitte warten ..
Mitglied: bastla
10.11.2006 um 10:45 Uhr
Hallo Sebastian!

Auf die Schnelle das Einlesen ohne Duplikate in ein Array:
01.
Option Explicit
02.

03.
Sub GetUnique()
04.
Dim oCell As Object
05.
Dim sErg(100) As String
06.
Dim i As Integer, j As Integer
07.
Dim bNeu As Boolean
08.
Dim sWert As String
09.

10.
i = 0
11.
For Each oCell In Range("B1:B200")
12.
    bNeu = True
13.
    sWert = oCell.Value
14.
    For j = 1 To i
15.
        If sWert = sErg(j) Then
16.
            bNeu = False
17.
            Exit For
18.
        End If
19.
    Next
20.
    If bNeu Then
21.
        i = i + 1
22.
        sErg(i) = sWert
23.
    End If
24.
Next
25.
End Sub
Ist noch etwas statisch (maximal 100 Ergebniseinträge, Datenbereich B1:B200), aber ich hoffe, Du siehst das Prinzip. Die Ergebniseinträge sErg(1) bis sErg(100) können dann in weiterer Folge den Formularfeldern zugeordnet werden.

Grüße
bastla
Bitte warten ..
Mitglied: Hummel85
10.11.2006 um 11:17 Uhr
Ich werde das mal probieren und auf meine Bedürfnisse anpassen.

Ich werde versuchen das bis montag auf meine Bedürfnisse anzupassen. Und mich dann wieder melden. Was dann noch wichtig ist alle diese Variablen Global zu Dimensionieren so das ich die dann in einem Formular verwenden kann. Und das das Formular Dynamisch ist. Also wenn ich 20 Variablen habe dann auch 20 Felder in einem Formular.
Bitte warten ..
Mitglied: bastla
13.11.2006 um 08:42 Uhr
Hallo Sebastian!

Um eine Userform mit allen Begriffen als Labels und je einer zugeordneten Textbox zu befüllen, könntest Du etwa so vorgehen:
01.
Option Explicit
02.
Dim Lb() As Control, Tx() As Control
03.

04.
Private Sub CommandButton1_Click()
05.
Dim oCell As Object
06.
Dim sErg(100) As String
07.
Dim i As Integer, j As Integer
08.
Dim bNeu As Boolean
09.
Dim sWert As String
10.

11.
i = 0
12.
For Each oCell In Range("B1:B200")
13.
    bNeu = True
14.
    sWert = oCell.Value
15.
    For j = 1 To i
16.
        If sWert = sErg(j) Then
17.
            bNeu = False
18.
            Exit For
19.
        End If
20.
    Next
21.
    If bNeu Then
22.
        i = i + 1
23.
        sErg(i) = sWert
24.

25.
        'Userform anpassen und ergänzen
26.
        Me.Height = i * 20 + 40
27.
        ReDim Preserve Lb(i) As Control, Tx(i) As Control
28.
        Set Lb(i) = Controls.Add("Forms.Label.1", "lbl_" & CInt(i), True)
29.
        With Lb(i)
30.
            .Top = i * 20 + 2
31.
            .Left = 10
32.
            .Width = 58
33.
            .Height = 12
34.
            .Caption = sWert
35.
        End With
36.
    
37.
        Set Tx(i) = Controls.Add("Forms.TextBox.1", "txt_" & CInt(i), True)
38.
        With Tx(i)
39.
            .Top = i * 20 + 0
40.
            .Left = 70
41.
            .Width = 150
42.
            .Height = 15
43.
            .Text = "noch leer"
44.
        End With
45.
    End If
46.
Next
47.
End Sub
Mit der Platzierung / Größe der Objekte musst Du sicher noch experimentieren, ebenso mit der Anordnung in ev mehreren Spalten (lässt sich aus der laufenden Nummer i ableiten).

Die Variablen sErg(i) kannst Du auch durch "Lb(i).Caption" ersetzen.

Grüße
bastla
Bitte warten ..
Mitglied: Hummel85
15.11.2006 um 10:55 Uhr
Danke für deine Hilfe nur leider kann ich auf Arbeit momentan damit nicht weiter arbeiten. Aber ich werde das zu Hause ausgiebig testen. Soweit ich dafür die Zeit finde.

Gruß Hummel
Bitte warten ..
Mitglied: Hummel85
16.11.2006 um 13:03 Uhr
Also ich bin gerade dazu gekommen das Makro mal zu Testen. Es läuft fast genau so wie ich es haben will.

Ich brauch nur noch 2 Schnipsel.

1. Wenn der Inhalt der Zelle "-" oder die Zelle lehr ist soll dies nicht in der Ausgabe
auftauchen.

2. Und wie kann ich am ende noch 2 Buttons einfügen "OK" und "cancel".

Wo ich das einfüge müsste ich dann auch noch wissen.

Wenn ich das habe bin ich eigentlich wunschlos glücklich.


Danke im Voraus.
Bitte warten ..
Mitglied: bastla
16.11.2006 um 13:42 Uhr
Hallo Sebstian!

zu 1.
01.
sWert = oCell.Value '***ab hier neu***
02.
If sWert = "-" Or sWert ="" Then
03.
	bNeu = False
04.
Else
05.
	For j = 1 To i
06.
		If sWert = sErg(j) Then
07.
			bNeu = False
08.
			Exit For
09.
		End If
10.
	Next
11.
End If '***ab hier wieder alt***
12.
If bNeu Then
zu 2.
Die Buttons würde ich an den Anfang der Userform stellen.
Vorteil: Du kannst Sie, unabhängig davon, wie viele Einträge unten folgen werden, bereits in der Entwurfsansicht einfügen und den entsprechenden Code dazu schreiben. Den Platz dafür hatte ich ohnehin bereits vorgesehen. Sollte er nicht reichen, einfach folgende Änderungen durchführen:
01.
Me.Height = i * 20 + 80 'statt 40
02.
...
03.
With Lb(i)
04.
    .Top = i * 20 + 42 'statt 2
05.
...
06.
With Tx(i)
07.
    .Top = i * 20 + 40 'statt 0
Grüße
bastla
Bitte warten ..
Mitglied: Hummel85
23.11.2006 um 10:29 Uhr
Hallo bastla,

vielen dank noch mal für deine Hilfe. Es funktioniert jetzt alles so wie ich das will.

Mit diesem Makro bin ich vorerst fertig.

Ich setze diesen Beitrag als auf gelöst.

Gruß Sebastian
Bitte warten ..
Neue Wissensbeiträge
Windows Mobile

Support für Windows Mobile endet im Dezember 2019

Information von transocean vor 23 StundenWindows Mobile

Moin, Microsoft empfiehlt als Alternative den Umstieg auf iOS oder Android, wie man hier lesen kann. Gruß Uwe

Internet

Kommentar: Bundesregierung erwägt Ausschluss von Huawei im 5G-Netz - Unsere Presse wird immer sensationsgieriger

Information von Frank vor 2 TagenInternet5 Kommentare

Hier mal wieder ein schönes Beispiel für fehlgeleiteten Journalismus und Politik zugleich. Da werden aus Gerüchten plötzlich Fakten, da ...

Windows 10

Netzwerk-Bug in allen Windows 10-Versionen durch Januar 2019-Updates

Information von kgborn vor 3 TagenWindows 101 Kommentar

Nur ein kurzer Hinweis für Admins, die Windows 10-Clients im Portfolio haben. Mit den Updates vom 8. Januar 2019 ...

Windows 10

Windows 10 V1809: Rollout ist gestartet - kommt per Windows Update

Information von kgborn vor 3 TagenWindows 102 Kommentare

Eine kurze Information für die Admins, die Windows 10 im Programm haben. Microsoft hat die letzte Baustelle (die Inkompatibilität ...

Heiß diskutierte Inhalte
DNS
SFTP über DynDNS nicht OK - über ext. IP funktioniert es
gelöst Frage von C.MorgensternDNS10 Kommentare

Hallo zusammen! Ich habe Probleme beim SFTP Zugriff auf eine Linux Maschine vom WAN aus über eine DynDNS Adresse. ...

Netzwerkmanagement
Server bauen
Frage von JugendringNetzwerkmanagement10 Kommentare

Moin Moin, wir, der Jugendring sind ein ständig wachsender Verein mit vielen Unterprojekten. Da liegt es nah, dass wir ...

E-Mail
Rechtssichere Archivierung von emails
Frage von gerd33E-Mail9 Kommentare

Hallo zusammen, bin gerade dabei, eine revisions- und rechtsichere email-archivierung aucf meinem Server zu projektieren. Da eigentlich nur ich ...

Off Topic
Darf ich ein Forum erstellen das Produkte eines Herstellers betrifft?
Frage von cyberwallOff Topic9 Kommentare

Hallo Community, ich habe da eine "rechtliche" bzw. allgemeine Frage zum erstellen von Foren. Darf ich als "normale Person" ...