Codeproblem bei Textcheck

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

Betrifft: Codeproblem bei Textcheck
von: Claudia
Geschrieben am: 23.02.2005 10:28:44
Guten Morgen liebes Forum,
ich komme leider mit meiner Excel-Datei nicht so recht weiter. Der folgende Code, den ich mit viel Hilfe und der Aufzeichnenfunktion zusammengefügt habe, funktioniert ganz gut:
Sub Textfeld16_BeiKlick()
With ActiveSheet
Range("A2").Select
.Unprotect Password:="123"
.ShowDataForm
Range("A2:H20").Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("B2").Select
Dim I As Integer
Range("A3:A20").Rows.AutoFit
For I = 3 To 20
With Rows(I)
.RowHeight = .RowHeight + 10
End With
Next
.Protect Password:="123"
End With
End Sub
Das einzige, was mich stört, ist, dass daraus, wenn man die Tabelle dann über Datei\Senden an\Mailempfänger versendet, ein 45seitiges Dokument wird. :-(
Zu diesem Problemschen habe ich jetzt aber leider noch weitere Anforderungen an den Code erhalten:
- Ist es möglich, abhängig davon, ob Text im Bereich A2:H20 ist, jede zweite
Zeile mit einem bestimmte Grauton zu versehen?
- Ist es möglich, nur die Zeilen in der Höhe anzupassen, in denen wirklich Text ist?
Ich habe nach Recherchen einen Code gefunden:


Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("b3:b50")) Is Nothing Then
    If Target.Text = True Then
     MsgBox ("1") ' hier dein Makro
    Else
      Exit Sub
    End If
  Else
    Exit Sub
  End If
End Sub

Den habe ich versucht anzupassen und einzubinden. Bin aber immer gescheitert. Könntet Ihr mir vielleicht helfen?
Großes Dankeschön - auch für die Dinge, die durch Euch ich bereits lernen durfte
Claudia
Bild

Betrifft: AW: Codeproblem bei Textcheck
von: Roland Hochhäuser
Geschrieben am: 23.02.2005 12:46:12
Hallo Claudia,
versuchs mal so:

Sub Textfeld16_BeiKlick()
Dim I As Integer, rng As Range, bolEmpty As Boolean
With ActiveSheet
    .Unprotect Password:="123"
    .ShowDataForm
    With Range("A2:H20")
        .Sort Key1:=Range("B2"), Order1:=xlAscending
        For Each rng In Range("A2:H20")
            If IsEmpty(rng) Then
                bolEmpty = False
            Else
                bolEmpty = True
                Exit For
            End If
        Next
        If bolEmpty Then
        For I = 2 To 20
            If I Mod 2 = 0 Then Rows(I).Interior.ColorIndex = 15
        Next
        End If
    End With
    Range("A3:A20").Rows.AutoFit
    .Protect Password:="123"
End With
End Sub
Die Höhenanpassung hattest du bisher zunächst auf Autofit(=optimale Höhe) eingestellt, um sie danach pro Zeile um jeweils 10 Punkte nach oben zu erhöhen. Damit können 45 Seiten erklärt werden. Mit dem Grauton musst du mal experimentieren, ich habe hier mal 15 genommen. Ansonsten habe ich das weggelassen, was m.E. nicht nötig ist.
Gruß Roland
Bild

Betrifft: AW: Codeproblem bei Textcheck
von: Claudia
Geschrieben am: 23.02.2005 13:16:43
Herzlichen Dank Roland. Es funkioniert auch wunderbar. Er markiert mir jeweils die zweite Zeile grau. Nur leider unabhängig davon, ob Text enthalten ist oder nicht. Wäre es möglich, dass er unterscheidet, ob Text enhalten ist und dann diese Zeilen nicht grau färbt?
Vielen lieben Dank für die Hilfe
Claudia
Bild

Betrifft: AW: Codeproblem bei Textcheck
von: Roland Hochhäuser
Geschrieben am: 23.02.2005 13:23:49
Hallo Claudia,
bevor wir aneinander vorbeireden: jetzt sucht das Makro innerhalb des Bereiches "A2:H20" nach _einer_ irgendwie gefüllten Zelle, um dann jede 2. Zeile grau zu färben. Du willst jetzt jede zweite Zeile grau haben,
-aber dann, wenn in ihr etwas steht, soll sie wieder weiß werden?!
-soll ab dieser Zeile jede 2. Zeile grau werden ?!
-soll was anderes passieren?!
Gruß Roland
Bild

Betrifft: AW: Codeproblem bei Textcheck
von: Claudia
Geschrieben am: 23.02.2005 14:10:29
Hi Roland,
Du hast ja Recht. Ich habe mich etwas komisch ausgedrückt. Hintergrund ist, dass die Tabelle versandt wird. Die Überschrift ist grau formatiert. Um nun die darunter stehenden einzelnen Datensätze von einander abzuheben, wäre es toll, wenn die jeweils zweite Zeile, die mit Text gefüllt ist, grau markiert wird. Wenn aber kein Text mehr kommt, soll bei "keiner Hintergrundfarbe" verblieben werden. Ich weiß nun leider nicht, ob das überhaupt möglich ist. Bei den Optionen, die Du oben aufgeführt hast, wäre es glaube ich
-jede zweite Zeile ab einem Punkt (Überschrift) checken, ob Text vorhanden ist und diese Zeilen (vielleicht auch nur die Zellen?) dann grau, sonst nichts.
Ich kenne mich leider überhaupt nicht aus. :-(((
Hast Du vielleicht einen Tipp?
Ganz herzlichen Dank
Claudia
Bild

Betrifft: AW: Codeproblem bei Textcheck
von: Roland Hochhäuser
Geschrieben am: 23.02.2005 15:18:41
Hallo Claudia,
jetzt denke ich habe ich begriffen was du möchtest; das kann aber je nachdem ein ziemlicher "Flickenteppich" werden:

Sub Textfeld16_BeiKlick()
Dim I As Integer, j As Byte, k As Byte
With ActiveSheet
    .Unprotect Password:="123"
    .ShowDataForm
    Range("A2:H20").Sort Key1:=Range("B2"), Order1:=xlAscending
    k = 1
    For I = 2 To 20
        For j = 1 To 8
            If Not IsEmpty(Cells(I, j)) Then
                k = k + 1
                Exit For
            End If
        Next
        If k Mod 2 = 0 Then Rows(I).Interior.ColorIndex = 15
    Next
    Range("A3:A20").Rows.AutoFit
    .Protect Password:="123"
End With
End Sub
Gruß Roland
Bild

Betrifft: AW: Codeproblem bei Textcheck
von: Claudia
Geschrieben am: 23.02.2005 15:57:55
Hallo Roland,
der Code funktioniert leider nicht richtig. Während der Eingabe über die Datenmaske ist alles ok. Man sieht im Hintergrund wie sich jede zweite Zelle grau schattiert. Wenn jedoch die Datenmaske geschlossen wird, ist auf einmal alles ab dem letzten Wert grau markiert. Kann man das vielleicht so abändern, dass da keine Formatierung vorgenommen wird? Auch ist der Startpunkt A4 mit der ersten Formatierung. Bei der momentanen Variante wird auch die Überschrift in A2 anders gefärbt, wenn ich die Maske schließe.
Ich habe einmal versucht, zu verstehen, was Du tolles gebastelt hast. Über ein abändern der Zahlen und In-die-Röhre-gucken komme ich jedoch nicht hinaus. Könntest Du mir vielleicht noch einmal unter die Arme greifen?
Liebe Dank
Claudia
Bild

Betrifft: AW: Codeproblem bei Textcheck
von: Claudia
Geschrieben am: 23.02.2005 16:04:07
Hallo Roland,
eine Sache konnte ich gerade klären durch Abändern der "I-Variable" auf 4. Dann ist schon einmal die Überschrift außen vor. *freu* Der Rest ist aber echt komisch. Solange man in der Datenmaske die Eintragungen vornimmt, sieht man im Hintergrund die richtige Formatierung. Nach dem Schließen der Maske wird die letzte beschriebene Zeile sowie alle anderen bis zur A20 entsprechend markiert. Auch ist vorher wirklich nur z.B. A4:H4 grau markiert. Nach dem Schließen der Form wird daraus "A?:IV?". Hilft das vielleicht?
Lieben Gruß und tausend Dank
Claudia
Bild

Betrifft: AW: Codeproblem bei Textcheck
von: Roland Hochhäuser
Geschrieben am: 23.02.2005 16:21:21
Hallo Claudia,
bislang wolltest du jede 2. Zeile mit Text in grau. Wenn du nun jede 2. Zeile mit Text, aber nur die Spalten A:H in grau haben willst, musst du das nehmen:

Sub Textfeld16_BeiKlick()
Dim I As Integer, j As Byte, k As Byte
With ActiveSheet
    .Unprotect Password:="123"
    .ShowDataForm
    Range("A2:H20").Sort Key1:=Range("B2"), Order1:=xlAscending
    k = 1
    For I = 4 To 20
        For j = 1 To 8
            If Not IsEmpty(Cells(I, j)) Then
                k = k + 1
                If k Mod 2 = 0 Then Range("A" & I & ":H" & I).Interior.ColorIndex = 15
                Exit For
            End If
        Next
    Next
    Range("A3:A20").Rows.AutoFit
    .Protect Password:="123"
End With
End Sub

Der Fehler mit dem grauen Auffüllen nach der letzten Textzeile ist ebenfalls behoben.
Nu aber:-))
Roland
Bild

Betrifft: Gelöst: Codeproblem bei Textcheck
von: Claudia
Geschrieben am: 23.02.2005 16:51:58
Hi Robert,
super! Das klappt jetzt wirklich prima. :-) Vielen lieben Dank.
Könntest Du mir vielleicht bei Gelegenheit einmal aufschlüsseln/erklären, was Du da so gezaubert hast? Das ist wirklich total interessant, was man alles so machen kann mit Excel.
Noch einmal gaaaaaanz tollen Dank
Claudia
Bild

Betrifft: WG: noch ein kleines Problemchen
von: Claudia
Geschrieben am: 23.02.2005 17:05:21
Hallo Robert,
ich will Dich wirklich nicht strapazieren, aber ich habe gerade entdeckt, dass wenn die Tabelle unter der Spalte keine Daten enthält, Excel dann eine Fragemeldung bringt (ob mit ausgewählter Markierung fortsetzen etc., kann nicht sortieren usw.). Könnte man diese Meldung noch irgendwie umgehen?
Das wäre echt super.
Noch einmal ganz herzlichen Dank für die anderen Kunststücke
Claudia
Bild

Betrifft: AW: WG: noch ein kleines Problemchen
von: Roland Hochhäuser
Geschrieben am: 23.02.2005 18:08:22
Hallo Claudia,
ohne Fehlermeldung gehts so:

Sub Textfeld16_BeiKlick()
Dim I As Integer, j As Byte, k As Byte
Application.DisplayAlerts = False
With ActiveSheet
    .Unprotect Password:="123"
    .ShowDataForm
    Range("A2:H20").Sort Key1:=Range("B2"), Order1:=xlAscending
    k = 1
    For I = 4 To 20
        For j = 1 To 8
            If Not IsEmpty(Cells(I, j)) Then
                k = k + 1
                If k Mod 2 = 0 Then Range("A" & I & ":H" & I).Interior.ColorIndex = 15
                Exit For
            End If
        Next
    Next
    Range("A3:A20").Rows.AutoFit
    .Protect Password:="123"
End With
Application.DisplayAlerts = True
End Sub

Bei deiner Selbsteinschätzung, was VBA-Kenntnisse angeht, den Code vollständig so zu erklären, dass du auch was davon hast, ist im Rahmen eines solchen Beitrages nicht zu leisten. Schau dir einfach mal ein gutes Buch dazu an (oder leihe dir das von deinem freundlichen Admin aus), und wenn du dann etwas weiter bist, kannst du dir die Funktionsweise des Makros auch im Einzelschritt selber erschließen.
Eine gute Quelle sind auch die Excel-Basics von dieser Web-Site.
Eine schönen Abend noch und Danke für die Blumen :-)) Roland
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Entfernungsmatrix"