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

gelöst Wert in variable Spalte und Zeile übernehmen

Mitglied: emotionmedia

emotionmedia (Level 1) - Jetzt verbinden

04.08.2008, aktualisiert 27.08.2008, 7492 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
Humor (lol)
IoT-Gefahr: Smartes Aquarium leckt!
Information von Lochkartenstanzer vor 1 TagHumor (lol)3 Kommentare

Moin, Die IoT-Manie hat weitere Opfer gefunden. Ein Casino-Leck durch ein smartes Aquarium: Allerdings haben sie kein Wasser, sondern ...

Router & Routing

Alte Fritzbox 7270 mit VPN und SIP-Telefonie hinter O2 Homebox 6641 als "Modem"

Erfahrungsbericht von the-buccaneer vor 1 TagRouter & Routing3 Kommentare

Nun war es soweit: Auch O2 hat mich mit VOIP zwangsbeglückt. Heute am Privatanschluss, in 2 Wochen ist das ...

Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 2 TagenSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 2 TagenWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Heiß diskutierte Inhalte
Sicherheit
Verbindliche Zustellung per E-Mail?
Frage von ahussainSicherheit18 Kommentare

Hallo allerseits, ein Kunde von mir nutzt intensiv Fax. Hauptgrund: zusammen mit einer Empfangsbestätigung ist eine verbindliche Zustellung gewährleistet. ...

Router & Routing
Mikrotik: Routing zwischen Interfaces mit Geräten ohne Gateway
Frage von TonLichtVideoRouter & Routing18 Kommentare

Hallo zusammen, ich komme aus dem Veranstaltungstechnik Bereich und habe zwei Netze um verschiedene Hardware zu Remoten. CONTROL1 192.168.1.0/24 ...

Linux Netzwerk
Raspberry Pi 3: WLAN Power save deaktivieren
Frage von nordie92Linux Netzwerk14 Kommentare

Moin moin, mein Raspberry Pi 3 Model B benötigt eine dauerhaft aktive WLAN-Verbindung. Leider bricht die WLAN-Verbindung nach einigen ...

SAN, NAS, DAS
Entscheidung SAN Dell oder HP
Frage von VincorSAN, NAS, DAS13 Kommentare

Hallo, wir wollen uns für unsere Hyper V Umgebung eine neue SAN Anschaffen. Es laufen 30 VM's darunter, DC; ...