Kurzes Programm zu Unterscheidung

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Kurzes Programm zu Unterscheidung
von: Nö
Geschrieben am: 18.04.2015 22:09:18

Guten Abend,
Ich brauche ein kleines Einfach Programm und habe leider keine Erfahrung mit VBA. Folgendes soll das Programm tun:
Wenn in eine bestimmten Spalte ein bestimmter Text steht, soll in der aktuellen Zelle eine bestimmte Formel eingefügt werden. Dieses Makro soll in einer ganzen spalte laufen.
So hatte ich bereits angefangen:

Sub UnterscheidungTyp()
If Sheets("7").Cells(3, ActiveCell.Row) = Dose Then
        Row As Double
        Row = ActiveCell.Row
        Dim oBlatt As Worksheet
        Set oBlatt = ThisWorkbook.Worksheets("Tabelle1") 'Typ auswählen'
        With oBlatt.Range(ActiveCell.Column, ActiveCell.Row).FormulaLocal = "=Produkt(G&Row&,H& _
Row&)"
        End With
    End If
End Sub
So hatte ich bis jetzt angefangen aber da sieht man vermutlich, dass ich keine Ahnung habe.
LG und Danke

Bild

Betrifft: AW: Kurzes Programm zu Unterscheidung
von: Oberschlumpf
Geschrieben am: 19.04.2015 00:27:32
Hi ???
versuchs mal so:

Sub UnterscheidungTyp()
    Dim lloRow As Double
    Dim oBlatt As Worksheet
        
        If Sheets("7").Cells(3, ActiveCell.Row) = Dose Then
            lloRow = ActiveCell.Row
            Set oBlatt = ThisWorkbook.Worksheets("Tabelle1")
            oBlatt.Range(ActiveCell.Column, ActiveCell.Row).FormulaLocal = "=Produkt(G" &  _
lloRow & ";H" & lloRow & ")"
        End If
    
    Set oBlatt = Nothing
    
End Sub

Wenn in deinem Code Option Explicit verwendet wird, führt die Zeile
If Sheets("7").Cells(3, ActiveCell.Row) = Dose Then
zu einem Fehler, da Dose als Variable interpretiert wird, aber deswegen vorher als solche deklariert werden muss, was in deinem Code noch fehlt...Dim Dose As ...
Wenn du nach "Dose", also nach dem Texteintrag "Dose" suchst, dann ändere die Zeile um in
If Sheets("7").Cells(3, ActiveCell.Row) = "Dose" Then
Hilfts?
Ciao
Thorsten
...wenns nich hilft, zeig uns bitte per Upload eine Excel-Beispiel-Datei mit Beispiel-Daten...

Bild

Betrifft: AW: Kurzes Programm zu Unterscheidung
von: Werner
Geschrieben am: 19.04.2015 06:40:49
Hallo Thorsten,
meinst du nicht, dass in der Code-Zeile

If Sheets("7").Cells(3, ActiveCell.Row) = Dose Then
ein Hund begraben ist? Es wird die Zeilennummer der aktiven Zelle als Spaltennummer übergeben. Wäre z.B. die aktive Zelle A10 dann würde der Code in diesem Fall J3 übergeben und dort nach Dose (was auch immer, Variable oder Zeichenfolge) suchen.
Ich denke der Frager sucht nach Dose in der Zeile der aktiven Zelle, Spalte C. Dann müsste der Code
If Sheets("7").Cells(ActiveCell.Row, 3) = Dose Then
lauten.
Gruß Werner

Bild

Betrifft: AW: Kurzes Programm zu Unterscheidung
von: Oberschlumpf
Geschrieben am: 19.04.2015 10:26:02
Hi Werner
ja, mag sein, dass du Recht hast.
Ich hab den Code nur so weit umgeshcrieben, was die Logik der "VBA-Voraussetzungen" betrifft...eben MIT Dim... wenn/wo erforderlich und ohne With..., weil in diesem Fall mit With... = Fehler.
Aber, mein Fehler :-), ich hab den Code überhaupt nicht getestet.
Na ja, eigtl nicht mein Fehler, da ja gar nix zum Testen da war.
Ciao
Thorsten

Bild

Betrifft: AW: Kurzes Programm zu Unterscheidung
von: Werner
Geschrieben am: 19.04.2015 12:44:00
Hallo Thorsten,
sollte keine Kritik sein. Ich lese hier häufig mit um zu lernen. Dass ich dir nicht das Wasser reichen kann ist mir durchaus bewusst. Aber so langsam beginne ich den Code auch zu verstehen. Deshalb mein Beitrag, nur zu meinem eigenen Verständnis.
Gruß Werner

Bild

Betrifft: AW: Kurzes Programm zu Unterscheidung
von: Werner
Geschrieben am: 19.04.2015 12:44:35
Hallo Thorsten,
sollte keine Kritik sein. Ich lese hier häufig mit um zu lernen. Dass ich dir nicht das Wasser reichen kann ist mir durchaus bewusst. Aber so langsam beginne ich den Code auch zu verstehen. Deshalb mein Beitrag, nur zu meinem eigenen Verständnis.
Gruß Werner

Bild

Betrifft: AW: Kurzes Programm zu Unterscheidung
von: Oberschlumpf
Geschrieben am: 19.04.2015 15:01:21
Hey Werner!
Alles gut! :-)
Auch Kritik ist gut!
Und ich mag es, wenn ich kritisiert werde. Klar, manchmal kann es sein, dass es sich im ersten Moment nicht sooo gut anfühlt, aber egal...wenn ich kritisiert werde, bekomme ich die Chance, etwas besser, bzw richtig zu machen. Ich muss mit der Kritik nur einverstanden sein und es umsetzen :-)
Aber erst mal Danke für dein Kompli....uih uih...dass mal jemand meint, mir nich das Wasser reichen zu können :-))...danke....aber....auch ICH mache Fehler....wie DU ja jetzt in diesem Thread festgestellt hast!
Und ich, oder du, oder irgdwer anders, der irgdwas ganz gut kann - ist allein NIE genau so gut, wie wir alle zusammen! :-)
Also, Attacke Werner!, auf zu den nächsten Excel-Abenteuern, und lass sie uns gemeinsam bestehen...hihi
Ciao + noch n schönen Sonntag
Thorsten

Bild

Betrifft: AW: Kurzes Programm zu Unterscheidung
von: Werner
Geschrieben am: 19.04.2015 22:56:04
Hallo,
ich habe das jetzt einmal so interpretiert - die Infos die du mitteilst sind etwas dürftig.
Annahme: Du befindest dich im Tabellenblatt 1 in Zelle D10 (Spalte D muss ggf. angepasst werden) und möchtest schauen ob im Tabellenlbatt 7 in Spalte C Zeile 10 (Zeile der aktiven Zelle in Blatt 1) der Begriff "Dose" steht. Wenn ja dann soll in der aktiven Zelle in Blatt 1 die Formel eingetragen werden.
Der Code gehört ins Tabellenblatt 1 (rechter Mausklick auf den Tabellenblattreiter, Code anzeigen wählen und Code ins Codefenster kopieren). Der Code wird ausgelöst durch Doppelklick in eine Zelle im Tabellenblatt 1 Spalte D (muss ggf. angepasst werden).

Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Aktiv As Worksheet
Dim Suche As Worksheet
Set Aktiv = ThisWorkbook.Worksheets("Tabelle1")
Set Suche = ThisWorkbook.Worksheets("Tabelle7")
With Aktiv
    If Target.Column = 4 Then 'wirkt in Spalte 4 ggf. anpassen
        If Suche.Cells(Target.Row, 3) = "Dose" Then
            Target.FormulaLocal = "=Produkt(G" & Target.Row & ";H" & Target.Row & ")"
            Target.Offset(1, 0).Select
            Else
            MsgBox "Dose ist in " & Suche.Name & " C" & Target.Row & " nicht vorhanden."
        End If
    End If
End With
End Sub
Gruß Werner

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Kurzes Programm zu Unterscheidung"