Waagerechte Zeilenbenennung

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

WildpigDE
**
Beiträge: 32
Registriert: Mi, 07.06.2006 21:06
Wohnort: Peine

Waagerechte Zeilenbenennung

Beitrag von WildpigDE »

Wenn ich mehrere senkreche Zellen in einem Makro benennen will lautet das ja z.B. "A3:A1" . Wenn ich das selbe für die Waagerechte mache, also z.B. "M1:M10" klappt das nicht. Wie muss es hier heissen?

Bis dann
Klaus
nevis
****
Beiträge: 111
Registriert: Fr, 28.10.2005 01:49

Beitrag von nevis »

M1:M10 ist einfach keine Waagerechte?
Nevis :)
WildpigDE
**
Beiträge: 32
Registriert: Mi, 07.06.2006 21:06
Wohnort: Peine

Beitrag von WildpigDE »

Doch, schon. Aber wenn ich das für eine ComboBox eingebe sehe ich nur die erste Zahl, also die in M1. Alle andern sind nicht da. In der senkrechten passt es. Da sind alle Zahlen zu sehen.
Bis dann
Klaus
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

M1:M10 ist keine Waagerechte! Auch nicht mit "Doch schon".

Du kannst doch in der Tabelle tadellos ablesen wie die Bezeichnungen lauten, warum machst Du das nicht einfach? Vielleicht meinst Du:
M1:V1
oder
M10:V10

aber dass ist doch meinerseits nur Raterei, Du gibst exakte Bezeichnungen an M1:M10 und die sind keine Waagerechte.


Gruß
Stephan
WildpigDE
**
Beiträge: 32
Registriert: Mi, 07.06.2006 21:06
Wohnort: Peine

Beitrag von WildpigDE »

ja, ist mir auch grade aufgefallen... peinlich...naja, ist halt schon spät.
Richtig muss es natürlich sein: B1:M1 Hier bekomme ich nur den ersten Wert (also bei B1) raus. die anderen tauchen nicht auf.
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Ja, und Nun?

Niemand versteht was Du willst. Von einer Combobox ist die Rede, ja aber was weiter ...


Gruß
Stephan
WildpigDE
**
Beiträge: 32
Registriert: Mi, 07.06.2006 21:06
Wohnort: Peine

Beitrag von WildpigDE »

umpf, vieleicht echt schon zu spät.
Also aus einer Tabelle lese ich über =SVERWEIS die Werte aus. Ich habe zwei ComboBoxen: eine für die waagerechten Werte, eine für die senkrechten. Die Werte werden in zwei Zeilen angegeben, die ich in der Formel habe. Das Funzt alles. So, die senkrechten Werte, also bei mir A3:A10 werden per Makro in die Combobox geladen. Das Klappt auch. Nur bei der Senkrechten haut das nicht hin (bei mir B1:M1). Angezeigt wird in der Box nur der Wert aus B1. Was ich genau wissen möchte ist, ob es richtig für die Waagerecht zu schreiben B1:M1 oder ob die Angabe anders lauten muss.
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Obwohl ich es nicht verstehe das das Ganze nun so geheim wäre das Du es nicht übers Herz bringst Deinen Code zu posten, so das man sehen könnte ob dort was fehlerhaft ist, rate ich einfach mal und denke mit das Du mit SVERWEIS() keine Zeilen, sondern nur Spalten lesen kannst, versuchst Du es trotzdem wirkt die Zeile wie eine einzeilige Spalte.

Verwende also WVERWEIS()


Gruß
Stephan
WildpigDE
**
Beiträge: 32
Registriert: Mi, 07.06.2006 21:06
Wohnort: Peine

Beitrag von WildpigDE »

Geheim! Nee wirklich nicht. Bin halt blutiger Anfänger. Die Tabelle siehst du hier:
viewtopic.php?t=7827
Da das große Geheimnis nun raus ist: in der einen Combobox will ich die Schraubengüte ablesen. Das klappt. In der anderen die auftretende Kraft. Das klappt nicht. Da steht nur "1" drinn. Alle anderen Werte sind nicht aufgeführt.

Code: Alles auswählen

'Kraft
Sub Write_To_Destination_Cell_Kraft()

Dim oDoc As Object
Dim oSheet As Object
Dim oForm As Object
Dim oComboBox As Object
Dim oCellRangeDestination As Object

	Set oDoc = ThisComponent
	Set oSheet = oDoc.Sheets.GetByName("dyn_axial")
	Set oForm = oSheet.DrawPage.Forms.GetByName("Standard")	
	Set oComboBox = oform.getByName("ComboBox02")
	Set oCellRangeDestination = oSheet.getCellRangeByName("D13")
	
	oCellRangeDestination.FormulaLocal = oComboBox.text
	
End Sub


Sub Load_Values_List_Kraft()
Dim oDoc As Object
Dim oSheet As Object
Dim oForm As Object
Dim oComboBox As Object
Dim oCellRangeSource As Object
Dim aSourceDataArray()
Dim aDataArrayRow()
Dim aSource() As String
Dim I As Integer

	Set oDoc = ThisComponent
	Set oSheet = oDoc.Sheets.GetByName("dyn_axial")
	Set oForm = oSheet.DrawPage.Forms.GetByName("Standard")	
	Set oComboBox = oform.getByName("ComboBox02")
	Set oCellRangeSource = oSheet.getCellRangeByName("B1:M1")
	
	'extract the data from the range
	aSourceDataArray() = oCellRangeSource.getDataArray()
	
	Redim Preserve aSource(UBound(aSourceDataArray())) As String

	'
	For I = LBound(aSource()) To UBound(aSource())
		aDataArrayRow()	= aSourceDataArray(I)
		aSource(I) = aDataArrayRow(0)
	Next I
	
	oComboBox.StringItemList = aSource()	


End Sub
Das it jetzt für die Box "Kraft" Und, :oops: :oops: wenn wir schonmal dabei sind, wie kann ich die Tabelle auf einem Tabellenblatt haben und die Combobox mit der Ausgabezelle auf einem anderen Tabellenblatt?
Bis dann
Klaus
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Das klappt nicht. Da steht nur "1" drinn. Alle anderen Werte sind nicht aufgeführt.


Ja, weil Du immer nur den ersten Wert übergibst:

Code: Alles auswählen

aSource(I) = aDataArrayRow(0)


Und aSource() auch nur einen Wert aufnehmen kann (UBOUND(aSource) --> = 0) und somit:

Code: Alles auswählen

For I = LBound(aSource()) To UBound(aSource())
auf:

For I = 0 To 0

hinausläuft

bzw.:

UBound(aSourceDataArray()) --> = 0



Verwende beispielsweise:

Code: Alles auswählen

Sub Load_Values_List_Kraft() 
Dim oDoc As Object 
Dim oSheet As Object 
Dim oForm As Object 
Dim oComboBox As Object 
Dim oCellRangeSource As Object 
Dim aSourceDataArray() 
Dim aDataArrayRow() 
Dim aSource() As String 
Dim I As Integer 

   Set oDoc = ThisComponent 
   Set oSheet = oDoc.Sheets.GetByName("dyn_axial") 
   Set oForm = oSheet.DrawPage.Forms.GetByName("Standard")    
   Set oComboBox = oform.getByName("ComboBox02") 
   Set oCellRangeSource = oSheet.getCellRangeByName("B1:M1") 
    
   'extract the data from the range 
   aSourceDataArray() = oCellRangeSource.getDataArray()
   Redim Preserve aSource(UBOUND(aSourceDataArray(0))) As String 

   ' 
   For I = LBound(aSource()) To UBound(aSource()) 
      aDataArrayRow()   = aSourceDataArray(0) 
      aSource(I) = aDataArrayRow(I) 
   Next I 

   oComboBox.StringItemList = aSource()    


End Sub
wie kann ich die Tabelle auf einem Tabellenblatt haben und die Combobox mit der Ausgabezelle auf einem anderen Tabellenblatt?
Indem Du die Combobox auf dem anderen Blatt einfügt und im Code für das Lesen der Daten und Schreiben in die Liste der Combobox entsprechend verschiedene Tabellen referierst, z.B.:

Code: Alles auswählen

'...
   Set oDoc = ThisComponent 
   Set oSheet = oDoc.Sheets.GetByName("dyn_axial")
   Set oSheet2 = oDoc.Sheets.GetByName("andereTabelle") 
   Set oForm = oSheet.DrawPage.Forms.GetByName("Standard")    
   Set oComboBox = oform.getByName("ComboBox02") 
   Set oCellRangeSource = oSheet2.getCellRangeByName("B1:M1") 
    
 'extract the data from the range 
   aSourceDataArray() = oCellRangeSource.getDataArray()
   Redim Preserve aSource(UBOUND(aSourceDataArray(0))) As String 

   ' 
   For I = LBound(aSource()) To UBound(aSource()) 
      aDataArrayRow()   = aSourceDataArray(0) 
      aSource(I) = aDataArrayRow(I) 
   Next I 

   oComboBox.StringItemList = aSource()    
'...


Gruß
Stephan
WildpigDE
**
Beiträge: 32
Registriert: Mi, 07.06.2006 21:06
Wohnort: Peine

Beitrag von WildpigDE »

Jau, das klappt! Gut 3 Stunden habe ich gebraucht, aber jetzt läuft alles in die richtige Richtung. Vielen Dank dir dafür.
Ich hoffe, das nächstemal Frage ich gleich genau genug.... :wink:
Bis dann
klaus
Antworten