Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1036to1040
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Den richtigen Dim-Befehl finden

Den richtigen Dim-Befehl finden
09.01.2009 08:03:29
SebastianSchelb
Hallo ihr Hilfsbereiten,
ich brauch noch mal eure hilfe.
Ich habe ein Problem mit folgendem Makro:

Sub xyz()
Dim Merker
Sheets("Blatt1").Select
Range("C4").Select
Set Sequenzname = ActiveCell.Offset(0, 0)
Sheets("Blatt2").Select
Range("C4").Select
If ActiveCell = "1" Then
Sheets("Blatt1").Select
Cells(4, 3) = Merker & " 1"
End If
' El 2 Überprüfen
Sheets("Blatt2").Select
Range("C5").Select
If ActiveCell = "1" Then
Sheets("Blatt11").Select
Cells(4, 3) = Merker & " 2"
End If
' El 3 Überprüfen
End Sub


Problem: Er soll Sich C4 (Gleiche Zelle wie Cells(4, 3)) merken und wenn ein If-Befehl zutrift das Gemerkte Plus eine Zahl in die Zelle schreiben. Das geht soweit gut, wenn nur ein If-Befehl zutrift[Merker = Merker]. Wenn beide zutreffen soll er nicht das "Gemerkte 1 2" schreiben sondern erst "Gemerkte 1" und dann mit "Gemerkte 2" überschreiben. Das Problem ist nämlich, das ich das in die gleiche Zelle rein schreibe und wenn da mal "Gemerkte 1" drinn stand nimmt er den ganzen Text als Gemerkt (mit der 1)[Merker = Merker 1].Ich brauche jetzt einen Tipp wie ich mache, das sich Excel das Gemerkte einmal am Anfang merkt und dann nicht mehr verrändert. Ich hoffe man kann mein Problem verstehen.
Vieleicht muss man da nicht "Dim Merker" schreiben, sondern "Dim Merker ?"
(?= Irgenwas wo mir unbekannt ist).
Vielen Dank
Gruß Sebbi
PS: Das ist nur ein Teil eines Makros, nicht wundern.

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Den richtigen Dim-Befehl finden
09.01.2009 09:43:00
Erich
Hallo Sebastian,
ist es das, was du erreichen möchtest?

Option Explicit            ' immer zu empfehlen
Sub xyz()
With Sheets("Blatt1").Cells(4, 3)
If Sheets("Blatt2").Cells(5, 3) = "1" Then
.Value = .Value & " 2"
ElseIf Sheets("Blatt2").Cells(4, 3) = "1" Then
.Value = .Value & " 1"
End If
End With
End Sub

Gewundert habe ich mich doch.
In deinem Code gibt es eine Variable Merker, die deklariert und verwendet wird, aber nie einen Wert erhält.
Das Range-Objekt Sequenzname wird zwar nicht deklariert und auch nicht verwendet, aber mit einem Wert belegt:
"Set Sequenzname = ..."
Und: Was unterscheidet ActiveCell.Offset(0, 0) von ActiveCell ? Wofür soll .Offset(0, 0) gut sein?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Den richtigen Dim-Befehl finden
09.01.2009 10:14:00
SebastianSchelb
Ertmal danke für deine Antwort. Ich habe da einen Fehler beim Posten meines Makros.

Sub xyz()
Dim Merker
Sheets("Blatt1").Select
Range("C4").Select
Set Merker = ActiveCell 'hier lag der Fehler
Sheets("Blatt2").Select
Range("C4").Select
If ActiveCell = "1" Then
Sheets("Blatt1").Select
Cells(4, 3) = Merker & " 1"
End If
' El 2 Überprüfen
Sheets("Blatt2").Select
Range("C5").Select
If ActiveCell = "1" Then
Sheets("Blatt1").Select
Cells(4, 3) = Merker & " 2"
End If
' El 3 Überprüfen
End Sub


Zu deiner Lösung:
Bei mir handelt es sich nicht nur um 2 Überprüfungen sondern um 4!
Das Makro, das ich will soll volgendes machen:
Ich habe 4 Kontrollkästchen, wo wenn ein Haken drin ist, die Zelle 4, 3, leicht geändert werden soll (je nach dem wo der Haken ist, wird was anderes geändert)[Merker & " 1"] und dann gedruckt. Wenn mehrere Kontrollkästchen angeklickt wurden soll er mehrer Drucke mache wo immer die Zelle 4, 3 anderst ist. So weit bin ich jetzt schon. Ich habe nur noch nicht das Problem mit dem Dim Merker gelöst.
Deine Idee ist super, aber klapt so leider nicht.
Gruß Sebbi
PS: Eine billig Lösung wäre, Zelle 4, 3 (Blatt 1), am Anfang, nach Zelle 10, 10 (Blatt 1) zu Kopieren und dann beim Befehlt:


Sub test()
Range("C4").Select
Selection.Copy
Range("J10").Select
ActiveSheet.Paste
Range("J10").Select
Set Merker = ActiveCell
Sheets("Blatt2").Select
Range("C4").Select
If ActiveCell = "1" Then
Sheets("Blatt1").Select
Cells(4, 3) = Merker & " 1"
End If
' El 2 Überprüfen
End Sub


Anzeige
AW: Den richtigen Dim-Befehl finden
09.01.2009 10:26:16
Erich
Hi Sebbi,
deine ersten Codezeilen

Sub xyz()
Dim Merker
Sheets("Blatt1").Select
Range("C4").Select
Set Merker = ActiveCell 'hier lag der Fehler


kannst du ersetzen durch


Sub xyz()
Dim Merker As String
Merker = Sheets("Blatt1").Range("C4").Value 'hier lag der Fehler - OHNE Set!

Diese vielen Selects sind (fast) immer überflüssig!
Mit Merker = Sheets("Blatt1").Range("C4").Value wird der String-Variablen Merker der Wert von C4 zugewiesen.
Das ist doch das, was du willst. Dafür muss C4 NICHT selektiert/markiert werden.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Den richtigen Dim-Befehl finden
09.01.2009 11:08:38
SebastianSchelb
Hi Erich,
genau das habe ich gesucht! Vielen dank, du bist ein Genie!
Es funktioniert super.
Gruß Sebbi
PS: Ich sollte mir mal ein Buch mit VBE Grundformeln kaufen!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige