Microsoft Excel

Herbers Excel/VBA-Archiv

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

Anwendungs- oder objektori. Fehler

Betrifft: Anwendungs- oder objektori. Fehler von: Bea
Geschrieben am: 21.01.2008 12:56:32

Hallo!
Da ich relativ am Ende meines Lateins bin und langsam "betriebsblind" werde, versuche ich es jetzt mal hier mit eurer Hilfe!
Ich schreibe gerade ein Macro mit dem ich aus einer Tabelle bestimmte "Überschriften" suchen kann und von denen ich die Spaltennummer auslesen will. Diese kann immer unterschiedlich sein, da die Spalten variieren. Der Fehler läuft immer auf ein anwendungs- oder objektorientiertes Problem hinaus und ich weiß nun nicht mehr weiter, da ich alle Möglichkeiten ausprobiert habe, diese Zelle zu aktivieren.
Nachfolgend steht der Code:

Sub SpaltennummernKopf()
   
   Workbooks("Kopfdaten.xls").Activate
   Worksheets("Tabelle1").Activate
   Range("A1").Select 'hier hackts
   'letzte Spalte finden
   letzteSpalte = Range("A1").End(xlToRight).Column
   'Spalte auswählen
   Range(Cells(1, letzteSpalte), Cells(1, letzteSpalte)).Select
   
   'Bereich durchsuchen und Wert ausgeben
   Zeile = Sheets("Tabelle1"). _
   UsedRange.SpecialCells(xlCellTypeLastCell).Row
   For Suchen = 1 To letzteSpalte
      If Cells(1, Suchen) = "Regulierer" Then
      MsgBox Suchen
   End If
   Next Suchen
End Sub



Vielen lieben Dank schonmal im Voraus für die Hilfe!

  

Betrifft: AW: Anwendungs- oder objektori. Fehler von: Hajo_Zi
Geschrieben am: 21.01.2008 13:01:41

Hallo Bea,

in VBA kann zu 99,9% auf select usw. verzichtet werden.
Lösche die Zeile und Range(Cells(1, letzteSpalte), Cells(1, letzteSpalte)).Select da nirgens auf die Selection Bezug genommen wird.

GrußformelHomepage


  

Betrifft: AW: Anwendungs- oder objektori. Fehler von: Renee
Geschrieben am: 21.01.2008 13:18:41

Hi Bea,

Das kannst Du auch billiger haben:

  Sub SpaltennummernKopf()
    Const tSuchbegriff = "Regulierer"
    Const tThisWorkbook = "Kopfdaten"
    Const tThisWorksheet = "Tabelle1"
    Dim rThisRange As Range
    Dim iSpalte As Integer
    Set rThisRange = Workbooks(tThisWorkbook).Sheets(tThisWorksheet).Rows(1)
    On Error Resume Next
    iSpalte = Application.WorksheetFunction.Match(tSuchbegriff, rThisRange, 0)
    MsgBox IIF(iSpalte=0,"Nix gefunden","Gefunden in Spalte " & iSpalte)
 End Sub



GreetZ Renée


  

Betrifft: AW: Anwendungs- oder objektori. Fehler von: Rudi Maintaire
Geschrieben am: 21.01.2008 13:19:27

Hallo,
das packst du sinnvollerweise in eine Function.

Function SpaltenNummer(wks As Worksheet, txt As String)
   Dim tmp
   tmp = Application.Match(txt, wks.Rows(1), 0)
   If Not IsError(tmp) Then
      SpaltenNummer = tmp
   Else
      SpaltenNummer = "Nicht vorhanden"
   End If
End Function



Sub tt()
   MsgBox SpaltenNummer(Workbooks("Mappe6").Sheets("Tabelle1"), "Regulierer"), , "Spaltennummer" _

End Sub


Gruß
Rudi

Eine Kuh macht Muh, viele Kühe machen Mühe


  

Betrifft: AW: Anwendungs- oder objektori. Fehler von: Bea
Geschrieben am: 21.01.2008 13:43:36

Vielen Dank für die schnelle Antworten!

Hajo: Nach deinem Tipp hat es dann doch geklappt! Und das mit "Select" werde ich mir merken ;)!

Rudi und Renee: Auch bei euch bedanke ich mich für den Code und die Mühe. Ich werde mich auf jeden Fall damit auseinandersetzen, da es wesentlich "schlanker" aussieht, als meiner und funktioniert ;).
Als Neuling achtet man nicht so auf schlanken, einfachen Code ;)


 

Beiträge aus den Excel-Beispielen zum Thema "Anwendungs- oder objektori. Fehler"