Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1356to1360
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

Mac VBA

Mac VBA
29.04.2014 21:23:42
Carmen
Hi,
ich abe ein VBA von einem Kollegen erhalnte das fua einem Windows erstellt wurde und das nciht auf meinem Mac läuft.
Wer kann mir das anpassen so dass es auch auf dem Mac läuft?
das hier ist sie:
Dim rowOut As Integer
Sub main()
Dim str$, strNew$, row%, i%
Dim nextLoop As Boolean
ScreenUpdating = False
nextLoop = False
row = 9 'start row
ActiveSheet.Range("D9:D20000").Select 'selected cells
rowOut = 2 'start output row
str = Range("D" & row).Value
strNew = str
Worksheets(2).UsedRange.ClearContents
Sheets("Sheet1").Activate
For Each cell In Selection.SpecialCells(xlCellTypeVisible)
strNew = cell.Value
If strNew = "" Then Exit For
Do While strNew ""
i = InStr(strNew, " ")
'last word in string
If i = 0 Then
Call writeData(strNew)
Exit Do
End If
Call writeData(Left(strNew, i - 1))
strNew = Right(strNew, Len(strNew) - i)
Trim (strNew)
Loop
Next cell
ScreenUpdating = True
Worksheets("Output").Activate
ActiveSheet.Range("A1:B1").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 49407
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Selection.AutoFilter
ActiveSheet.Range("A1").Select
ActiveCell.FormulaR1C1 = "Keyword"
ActiveSheet.Range("B1").Select
ActiveCell.FormulaR1C1 = "Anzahl"
End Sub

Private Sub writeData(str As String)
Dim cell As Range
Dim val%
With Worksheets("Output")
Set cell = .Range("A:A").Find(str, after:=Cells(2, 1), lookat:=xlWhole)
If cell Is Nothing Then 'new word
.Range("A" & rowOut).Value = str
val = .Range("B" & rowOut).Value
val = val + 1
.Range("B" & rowOut).Value = CStr(val)
rowOut = rowOut + 1
Else 'existing word, inc count
val = .Range("B" & cell.row).Value
val = val + 1
.Range("B" & cell.row).Value = val
End If
End With
End Sub

Private Sub Run_Click()
Call main
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mac VBA
30.04.2014 12:57:02
fcs
Hallo Carmen,
eine Beurteilung deiner Makros ist etwas schwierig.
Einige typische Mac/Windowsprobleme, wie Dateinamen, Pfadangaben, Pfadtrennzeichen, hab ich jetzt nicht entdeckt.
Die Makros arbeiten ja in verschiedenen Tabellenblättern (ActiveSheet, Worksheets(2), Worksheets("Output"), Sheets("Sheet1"). Hier müsste eigentlich durch Verwendung von Objektvariablen aufgeräumt werden, um das Ganze weniger fehleranfällig zu machen.
Außerdem solten alle verwendeten Variablen deklariert werden.
Ich hab ein paar Korrekturen im Code gemacht, die eigentlich auch unter Windows für die gewünschte Funktion erforderlich sind und die Variablendeklaration für ganze Zahlen von Integer in Long geändert.
Gruß
Franz

Dim rowOut As Long            'Zeilenzähler als Long statt Integer
Sub main()
Dim str$, strNew$, row&, i&   'Zeilenzähler als Long (&) statt Integer (%) deklariert
Dim Cell As Range                                           'Variablendeklaration ergänzt
Dim nextLoop As Boolean
Application.ScreenUpdating = False                          'Korrektur
nextLoop = False
row = 9 'start row
ActiveSheet.Range("D9:D20000").Select 'selected cells
rowOut = 2 'start output row
str = Range("D" & row).Value
strNew = str
Worksheets(2).UsedRange.ClearContents
Sheets("Sheet1").Activate
For Each Cell In Selection.SpecialCells(xlCellTypeVisible)
strNew = Cell.Value
If strNew = "" Then Exit For
Do While strNew  ""
i = InStr(strNew, " ")
'last word in string
If i = 0 Then
Call writeData(strNew)
Exit Do
End If
Call writeData(Left(strNew, i - 1))
strNew = Right(strNew, Len(strNew) - i)
Trim (strNew)
Loop
Next Cell
Application.ScreenUpdating = True                             'Korrektur
Worksheets("Output").Activate
ActiveSheet.Range("A1:B1").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 49407
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Selection.AutoFilter
ActiveSheet.Range("A1").Select
ActiveCell.FormulaR1C1 = "Keyword"
ActiveSheet.Range("B1").Select
ActiveCell.FormulaR1C1 = "Anzahl"
End Sub
Private Sub writeData(str As String)
Dim Cell As Range
Dim val&             'Deklariert als Long (&) statt Integer (%)
With Worksheets("Output")
Set Cell = .Range("A:A").Find(str, after:=.Cells(2, 1), lookat:=xlWhole) 'Korrektur: Punkt  _
vor Cells
If Cell Is Nothing Then 'new word
.Range("A" & rowOut).Value = str
val = .Range("B" & rowOut).Value
val = val + 1
.Range("B" & rowOut).Value = CStr(val)
rowOut = rowOut + 1
Else 'existing word, inc count
val = .Range("B" & Cell.row).Value
val = val + 1
.Range("B" & Cell.row).Value = val
End If
End With
End Sub
Private Sub Run_Click()
Call main
End Sub

Anzeige
AW: Mac VBA
30.04.2014 19:41:17
Carmen
super vielen Dank es funktioniert jetzt auch auf dem Mac, Klasse freu mich riesig.
Wenn du mal eine vernünftige Keywordrecherche brauchst mit einer soliden Auswertung dazu, dann meld dich bei mir.
LG Carmen
http://my-keywords.de

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige