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

Frage Microsoft Microsoft Office

GELÖST

Wert in variable Spalte und Zeile übernehmen

Mitglied: emotionmedia

emotionmedia (Level 1) - Jetzt verbinden

04.08.2008, aktualisiert 27.08.2008, 7473 Aufrufe, 8 Kommentare

Hallo Zusammen

Ich muss wegen der hohen Komplexität eines Excel-Files, eine Eingabemaske erstellen. Darin wird der jeweilige Tag des Monats und die betreffende Position eingetragen bzw. ausgewählt.
Zusätzlich wird in einem Feld ein Nummerischer Wert eingetragen, welcher in ein bestimmtes Tabellenblatt übernommen werden soll.

Dieses Formular sieht also ungfähr so aus:

Tag: <13>
Position: <Guggus>
Wert: <3.5>

Die Tabelle in die der Wert (in diesem Falle 3.5) übernommen werden muss, sieht so aus:

Positionen | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 etc....bis max. 31

Nun soll das VBA Makro ausfindig machen auf welcher Zeile (anhand der Position) und in welcher Spalte (anhand des Tages) der Wert übernommen werden muss und tragt ihn dort ein.

Kann mir da jemand helfen?

Besten Dank schon im Voraus & Grüsse aus der Schweiz!
Andy
Mitglied: bastla
04.08.2008 um 15:02 Uhr
Hallo emotionmedia und willkommen im Forum!

Etwa so:
01.
Sub Eintrag() 
02.
Tag = 13 
03.
Position = "Guggus" 
04.
Wert = 3.5 
05.
 
06.
Basis = "A3" 'erste Zelle der Überschrift 
07.
 
08.
Zeile = Range(Basis).Row + 1 
09.
Spalte = Range(Basis).Column 
10.
 
11.
Suchwert = Trim(LCase(Position)) 
12.
Z = 0 
13.
Do While Cells(Zeile, Spalte).Value <> "" 
14.
    If Trim(LCase(Cells(Zeile, Spalte).Value)) = Suchwert Then 
15.
        Z = Zeile 
16.
        Exit Do 
17.
    End If 
18.
    Zeile = Zeile + 1 
19.
Loop 
20.
If Z = 0 Then 
21.
    MsgBox Position & " nicht gefunden!", vbCritical 
22.
Else 
23.
    Cells(Z, Spalte + Tag).Value = Wert 
24.
End If 
25.
End Sub
Deine Variablen habe ich, zu Testzwecken, in den ersten Zeilen festgelegt. Die Variable "Basis" enthält die Adresse der linken oberen Ecke Deiner Matrix (= erste Zelle der Überschriftszeile, Inhalt = "Positionen")

Gesucht wird in der Spalte "Positionen" so lange, bis die Zelle mit dem Inhalt der Variablen "Position" (ohne Berücksichtigung von Groß-/Kleinschreibung und ev am Anfang oder Ende enthaltenen Leerzeichen) oder eine leere Zelle gefunden wird.

Grüße
bastla
Bitte warten ..
Mitglied: emotionmedia
05.08.2008 um 15:24 Uhr
Hallo Bastla

Vielen Dank schonmal für Deine super Aufstellung. Versuche das nun gerade zu adaptieren.
Nun habe ich noch eine ganz blöde Frage dazu:

Ich möchte z.B. die Variable Position setzen. Dazu mache ich grundsätzlich:

Position = Range("B4").Value

Doch nun ist es so, dass das Eingabeformular auf einer Tabelle ist und die die Variable "Wert" auf eine andere hin transportiert werden muss. Demnach gehe ich davon aus, dass ich ja noch irgendwie die speziefischen Blätter ansprechen muss. Damit das Script weiss von welchem Blatt die Zelle B4 zu nehmen ist.

Wie mache ich das noch?

Grüsse,
emotionmedia
Bitte warten ..
Mitglied: bastla
05.08.2008 um 15:29 Uhr
Hallo emotionmedia!

Um "Tabelle1" anzusprechen, wäre die Schreibweise:
01.
Position = Worksheets("Tabelle1").Range("B4").Value
Grüße
bastla
Bitte warten ..
Mitglied: emotionmedia
26.08.2008 um 09:13 Uhr
Hallo Bastla!
Ich habe nun intensiv versucht das Script lauffähig zu bringen. Leider bisher ohne Erfolg. Der Mitarbeiter resp. seine MA-Nummer wird in der Tabelle nicht gefunden.
Mein Script sieht nun folgendermassen aus:

[CODE]
Public Sub EingabeUbernehmen()
' Makro am 04.08.2008 von ARE geschrieben
' Version 0.1
'
' Definition der benötigten Variabeln
Dim Spalte As String
' Prüfen ob Pflichtfelder ausgefüllt sind
' Wenn B2 == 1 = gut
If (Range("B2").Value = 1) Then
' Übernahme in "Hausm"-Tabelle
If (Range("B6").Value <> "") Then
Entry "test"
End If
Range("C20").Value = "Daten von " & Range("C4").Value & " übernommen"
Else ' Wenn Pflichtfelder nicht vollständig
Range("C20").Value = "Pflichtfelder nicht vollständig"
End If
End Sub

Private Sub Entry(Arbeitsblatt As String)
Basis = "A5" 'erste Zelle der Überschrift

Tag = Worksheets("EINGABEMASKE").Range("B3").Value
Position = Worksheets("EINGABEMASKE").Range("B4").Value
Wert = Worksheets("EINGABEMASKE").Range("B6").Value

Zeile = Worksheets(Arbeitsblatt).Range(Basis).Row + 1
Spalte = Worksheets(Arbeitsblatt).Range(Basis).Column
Suchwert = Trim(LCase(Position))
Z = 0
Do While Cells(Zeile, Spalte).Value <> ""
If Trim(LCase(Cells(Zeile, Spalte).Value)) = Suchwert Then
Z = Zeile
Exit Do
End If
Zeile = Zeile + 1
Loop
If Z = 0 Then
MsgBox "Mitarbeiter Nr. " & Position & " nicht gefunden!", vbCritical
Else
Cells(Z, Spalte + Tag).Value = Wert
End If
End Sub
[/CODE]

Es kommt immer die vbCritical-Meldung "Mitarbeiter Nr. 9 nicht gefunden", obwohl die Nr. 9 in der Tabelle "test" vorhanden ist...

Gruss schon im Voraus für jede Hilfe...
Andy
Bitte warten ..
Mitglied: bastla
26.08.2008 um 14:22 Uhr
Hallo emotionmedia!

Wenn Du "ferngesteuert" arbeitest, musst Du natürlich auch die Tabelle, in welche der Eintrag erfolgen soll, angeben:
01.
Private Sub Entry(Arbeitsblatt As String) 
02.
Basis = "A5" 'erste Zelle der Überschrift 
03.
 
04.
Tag = Worksheets("EINGABEMASKE").Range("B3").Value 
05.
Position = Worksheets("EINGABEMASKE").Range("B4").Value 
06.
Wert = Worksheets("EINGABEMASKE").Range("B6").Value 
07.
 
08.
Zeile = Worksheets(Arbeitsblatt).Range(Basis).Row + 1 
09.
Spalte = Worksheets(Arbeitsblatt).Range(Basis).Column 
10.
Suchwert = Trim(LCase(Position)) 
11.
 
12.
With Worksheets(Arbeitsblatt) 
13.
    Z = 0 
14.
    Do While .Cells(Zeile, Spalte).Value <> "" 
15.
        If Trim(LCase(.Cells(Zeile, Spalte).Value)) = Suchwert Then 
16.
            Z = Zeile 
17.
            Exit Do 
18.
        End If 
19.
        Zeile = Zeile + 1 
20.
    Loop 
21.
    If Z = 0 Then 
22.
        MsgBox "Mitarbeiter Nr. " & Position & " nicht gefunden!", vbCritical 
23.
    Else 
24.
        .Cells(Z, Spalte + Tag).Value = Wert 
25.
    End If 
26.
End With 
27.
End Sub
Grüße
bastla

P.S.: Hier brauchst Du für die Formatierung als "Code" Tags mit "<" und ">" anstelle der eckigen Klammern.
Bitte warten ..
Mitglied: emotionmedia
27.08.2008 um 09:55 Uhr
Hallo bastla

Leider funktioniert's noch immer nicht. Aus irgendeinem Grund bleibt der Wert Z ständig bei 0 (durchsucht die Zeilen nicht...). Der Einfachheit halber habe ich mal mein File unter folgender Adresse hinauf geladen:

http://public.me.com/emotainment

Gruss,
emotionmedia
Bitte warten ..
Mitglied: bastla
27.08.2008 um 10:20 Uhr
Hallo emotionmedia!

Die funktionierende Version zu Deiner Testdatei würde so aussehen:
01.
Private Sub Entry(Arbeitsblatt As String) 
02.
    Basis = "A1" 'erste Zelle der Überschrift 
03.
 
04.
    Tag = Worksheets("EINGABEMASKE").Range("B3").Value 
05.
    Position = Worksheets("EINGABEMASKE").Range("B4").Value 
06.
    Wert = Worksheets("EINGABEMASKE").Range("B6").Value 
07.
 
08.
   Zeile = Worksheets(Arbeitsblatt).Range(Basis).Row + 1 
09.
' Zeile = 1 
10.
    Spalte = Worksheets(Arbeitsblatt).Range(Basis).Column 
11.
    Suchwert = Trim(LCase(Position)) 
12.
     
13.
    With Worksheets(Arbeitsblatt) 
14.
        Z = 0 
15.
        Do While .Cells(Zeile, Spalte).Value <> "" 
16.
            If Trim(LCase(.Cells(Zeile, Spalte).Value)) = Suchwert Then 
17.
                Z = Zeile 
18.
                Exit Do 
19.
            End If 
20.
            Zeile = Zeile + 1 
21.
        Loop 
22.
        If Z = 0 Then 
23.
            MsgBox "Mitarbeiter Nr. " & Position & " nicht gefunden!", vbCritical 
24.
        Else 
25.
            .Cells(Z, Spalte + Tag).Value = Wert 
26.
        End If 
27.
    End With 
28.
MsgBox "DEBUG: Tag:" & Tag & ", Position:" & Position & ", Wert:" & Wert & ", Zeile:" & Zeile & ", Spalte:" & Spalte & ", Suchwert:" & Suchwert & ", Arbeitsblatt:" & Arbeitsblatt 
29.
End Sub
Zum Einen hast Du zum Testen die Variable "Basis" nicht angepasst, sondern die (Start-)Zeile konstant eingegeben - allerdings mit Wert 1, womit (da A1 leer ist) die Suche sofort beendet wurde, zum Anderen hast Du zuwenig Punkte gemacht (jeweils vor "Cells") ...

Grüße
bastla
Bitte warten ..
Mitglied: emotionmedia
27.08.2008 um 11:29 Uhr
Wow, nun funktioniert's perfekt!!
Vielen herzlichen Dank für Deine super Hilfe - Du bist ja ein wahrer VB-Crack!!

Lieben Gruss aus der Schweiz!!
Andy aka emotionmedia
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
Werte aus Spalten in Zeilen suchen und zweiten Wert zuordnen
Frage von frosch44Microsoft Office1 Kommentar

Guten Morgen, hier ist der Aprilscherzmacher :-) Heute suche ich folgende Lösung: Ich habe Spalte A mit Daten und ...

Microsoft Office
Wert aus einer Spalte mit Werten in einer Spalten vergleiche, wenn Wert vorhanden, dann Wert aus der dritten Spalte in der selben Zeile ausgeben, verschiedene Tabellenblätter
gelöst Frage von DevilioMicrosoft Office5 Kommentare

Hallo Zusammen, ich habe folgendes Problem und finde keine Lösung. Ich habe 2 Tabellenblätter mit folgenden Daten: Tabelle 1: ...

Microsoft Office
Excel: Wenn Wert in Spalte A dann kopiere Zeile
gelöst Frage von michi1983Microsoft Office8 Kommentare

Hallo Admins, ich bräuchte mal eure Unterstützung in Sachen Excel. Da bin ich nämlich leider ein kompletter noob. Ich ...

Datenbanken
Update auf eine Spalte in Zeilen, die den gleichen wert in mehreren anderen Spalten enthalten
Frage von rohannDatenbanken5 Kommentare

Hallo Leute! Vermutlich ein leichter Griff für geübte SQLer, aber ich komme gerade nicht richtig weitervielleicht ist das so ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 2 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 3 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 3 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 3 TagenSicherheit12 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Firewall
Penetrationstester-Labor - Firewalls
Frage von Oli-nuxFirewall10 Kommentare

Mich würde interessieren warum man beim Einrichten eines Penetrationstester-Labor (VMs) die Firewall der Systeme deaktivieren soll? Hat das nur ...

SAN, NAS, DAS
Wer kennt sich mit QNAP und CISCO aus ?
gelöst Frage von MachelloSAN, NAS, DAS9 Kommentare

Hallo Zusammen hier im Forum, Ich habe ein QNas 451+ und dieses NAS hat zwei GBit Lan Adapter die ...

Netzwerkgrundlagen
IPv6 Inter-VLAN Routing
gelöst Frage von clSchakNetzwerkgrundlagen9 Kommentare

Hi ich befasse mich gerade mit der Implementierung von IPv6 was bisher (in einem VLAN) korrekt funktioniert inkl. DNS ...

Windows Netzwerk
Zugriff auf den Desktop Ordner eines anderen Rechners in der gleichen Domäne
gelöst Frage von JensNomaWindows Netzwerk6 Kommentare

Guten Abend, ich war neulich mit unserem Admin am Tisch gesessen. Er an seinem Notebook angemeldet mit dem Domänen-Admin, ...