Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

VBA Zellberechnung | Herbers Excel-Forum


Betrifft: VBA Zellberechnung von: Achim Krebs
Geschrieben am: 31.01.2010 10:51:11

Hallo Leute

habe ein Problem

Es werden regelmäßig Preislisten per Makro aus dem Internet abgefragt.
Der Aufbau ist eigentlich immer gleich bis auf einen kleinen Unterschied. Das Wort „Standard“
Wenn „Standart" in Zelle A8 steht klappt es mit nachfolgendes Makro welches ich mit dem Macrorecorder hergestellt habe, und die Zellen werden entsprechend bearbeitet.

Range("F11:G11").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Columns("H:I").Select
Selection.Delete Shift:=xlToLeft
ActiveSheet.Cells.Hyperlinks.Delete
Range("B14:H42").Value = Application.Substitute(Range("B14:H42").Value, "€", "")
Range("B14:H42").NumberFormat = "#,##0.00 $"

Steht „Standard " aber z.B. in A11 klappt das nicht mehr. Dann müsste das eigentlich so aussehen

Range("F17:G17").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Columns("H:I").Select
Selection.Delete Shift:=xlToLeft
ActiveSheet.Cells.Hyperlinks.Delete
Range("B17:H45").Value = Application.Substitute(Range("B17:H45").Value, "€", "")
Range("B17:H45").NumberFormat = "#,##0.00 $"

Das ganze soll als Makro ausgeführt werden so das das in allen Tabellen (ca. 910) funktioniert.
Leider verändert sich die Position von „Standard“ innerhalb einer Tabelle von Tag zu Tag
Der Aufbau der Tabellen, die Anzahl der Spalten unterhalb der zu bearbeitenden Felder ist immer gleich nur das Wort „Standard“ rutscht mal auf A8 oder A22 oder A7 usw. und die nachfolgenden Zellen entsprechend nach unten oder oben.
Mann müsste also die Position auszählen und den wert zu den Zellwerten addieren, so dass es kein fester Wert sonder ein relativer Wert wird.

Mit folgendem versuch konnte ich zumindest schon mal feststellen wo „Standard“ steht.

Dim OB As Integer, UT As Integer
OB = 6 & i
UT = 7 & i
For i = 1 To 65000 Step 1
If Range("A" & i).Value = "Standard" Then
MsgBox "Standard steht in Zelle: " & i
Range(Cells(OB), Cells(UT)).Select
Exit Sub
End If
Next i

Ich hoffe jemand kann helfen.

Danke schon mal im voraus

  

Betrifft: AW: VBA Zellberechnung von: Josef Ehrensberger
Geschrieben am: 31.01.2010 10:59:47

Hallo Achim,


ungetestet!


Sub achim()
  Dim vntRet As Variant
  
  With ActiveSheet
    vntRet = Application.Match("Standard", .Columns(1), 0)
    If IsNumeric(vntRet) Then
      .Range(.Cells(vntRet + 3, 6), .Cells(vntRet + 3, 7)).Insert Shift:=xlDown, _
        CopyOrigin:=xlFormatFromLeftOrAbove
      .Columns("H:I").Delete Shift:=xlToLeft
      .Hyperlinks.Delete
      With .Range(.Cells(vntRet + 6, 2), .Cells(vntRet + 6, 8))
        .Value = Application.Substitute(.Value, "€", "")
        .NumberFormat = "#,##0.00 $"
      End With
    End If
  End With
  
End Sub

Gruß Sepp