786 Aufrufe
in Tabellenkalkulation von jelena Experte (1.1k Punkte)

Hallo guten Tag, ich habe das folgende Makro gefunden es soll jedoch nur bis zum Ende dieser zwei spalten (von G2 bis max. H303) ausgeführt werden da es sonst ziemlich lange dauert. Es kann auch sein, dass nur bis G50 bzw. H50 ein Text vorhanden ist. Danke

Sub Grossbuchstabe()
   ' Loop to cycle through each cell in the specified range.
   For Each x In Range("G2:H303")
      ' There is not a Proper function in Visual Basic for Applications.
      ' So, you must use the worksheet function in the following form:
      x.Value = Application.Proper(x.Value)
   Next
End Sub

12 Antworten

0 Punkte
von
Bearbeitet
Range("G2:H" & Application.Min(303, [MAX(IFERROR(MATCH("*",G:G,-1),2),IFERROR(MATCH("*",H:H,-1),2))])).Value = Application.Proper(Range("G2:H" & Application.Min(303, [MAX(IFERROR(MATCH("*",G:G,-1),2),IFERROR(MATCH("*",H:H,-1),2))])).Value)
0 Punkte
von jelena Experte (1.1k Punkte)
Bearbeitet von jelena
Hallo Anonym, Bitte um komplettes Makro, es befinden sich auch leerzellen dazwischen. Danke
0 Punkte
von
Sub DeinMakro()
 Range("G2:H" & Application.Min(303, [MAX(IFERROR(MATCH("*",G:G,-1),2),IFERROR(MATCH("*",H:H,-1),2))])).Value = Application.Proper(Range("G2:H" & Application.Min(303, [MAX(IFERROR(MATCH("*",G:G,-1),2),IFERROR(MATCH("*",H:H,-1),2))])).Value)
End Sub
0 Punkte
von jelena Experte (1.1k Punkte)

Hallo Anonym, dieses Makro funktioniert nur bis zur ersten leere Zeile, danach kommt in den nächsten Zellen nur mehr dieses Zeichen #NV. Danke

0 Punkte
von
Sub DeinMakro()
Range("G2:H" & [MIN(303,MAX(IFERROR(MATCH(REPT("z",255),G:G),1),IFERROR(MATCH(REPT("z",255),H:H),1)))]).Value = Evaluate("IF(G2:H" & [MIN(303,MAX(IFERROR(MATCH(REPT("z",255),G:G),1),IFERROR(MATCH(REPT("z",255),H:H),1)))] & "="""","""",PROPER(G2:H" & [MIN(303,MAX(IFERROR(MATCH(REPT("z",255),G:G),1),IFERROR(MATCH(REPT("z",255),H:H),1)))] & "))")
End Sub

 

Dieser Einzeiler ist getestet, kompakt, schnell und fehlerfrei.
0 Punkte
von jelena Experte (1.1k Punkte)

Hallo Anonym, dieses Makro funktioniert nur bis zur ersten leere Zeile, danach kommt in den nächsten Zellen bis zur nächsten leerzeile dieses Zeichen #NV. Z.B. Zeile G2 bis G10 ist Text vohanden, in G11 ist kein Text und in G12 gibt es wieder einen Text. Danke

0 Punkte
von
Dann lade mal eine Beispieldatei hoch!
0 Punkte
von beverly_ Experte (3.7k Punkte)

Hi Jelena,

Sub Groß()
    Dim lngLetzte As Long
    Dim lngZeile As Long
    Range("G1") = Now
    lngLetzte = Range("G5:H303").Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
    Application.ScreenUpdating = False
    For lngZeile = 2 To lngLetzte
        If Not IsNumeric(Cells(lngZeile, 7)) Then
            Cells(lngZeile, 7) = Application.Proper(Cells(lngZeile, 7))
        End If
        If Not IsNumeric(Cells(lngZeile, 8)) Then
            Cells(lngZeile, 8) = Application.Proper(Cells(lngZeile, 8))
        End If
    Next lngZeile
    Application.ScreenUpdating = False
    Range("H1") = Now
End Sub

Bei 300 Zeilen braucht dieses Makro nicht mal 1 Sekunde.

Bis später, Karin

0 Punkte
von jelena Experte (1.1k Punkte)
Hallo Karin, in der Zelle G1 und H1 befindet sich eine Überschrift mit diesem Makro kommt in Zelle G1 und H1 das Datum und die Uhrzeit von der Makroausführung der Rest ginge gut. Bitte um Nachbesserung. Danke
0 Punkte
von jelena Experte (1.1k Punkte)

Hallo Karin, ich habe

Range("G1") = Now
Range("H1") = Now

ausgeblendet, dann müsste es gehen. Danke

Deine Antwort

Dein angezeigter Name (optional):
Datenschutz: Deine Email-Adresse benutzen wir ausschließlich, um dir Benachrichtigungen zu schicken. Es gilt unsere Datenschutzerklärung.
Anti-Spam-Captcha:
Bitte logge dich ein oder melde dich neu an, um das Anti-Spam-Captcha zu vermeiden.
...