Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Frage Microsoft Microsoft Office

Mitglied: Hummel85

Hummel85 (Level 1) - Jetzt verbinden

10.11.2006, aktualisiert 23.11.2006, 8511 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
JavaScript
AngularJS Variable über Input in Funktion ausführen

Frage von badkilla zum Thema JavaScript ...

Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Batch & Shell
gelöst Selected Gridview Value in Variable schreiben (4)

Frage von reissaus73 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...