アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルのユーザーフォーム内に張り付けてある、リストボックスがあります。
その項目が文字や数字など、複数の項目が存在しています。
ちょうど下のような感じです。(うまく表示されませんが、、、)

イチロー  1973/10/22  8:43   野球  18
岩崎恭子  1978/07/21  9:35   水泳  7
北杜夫   1927/05/01  10:39  作家  9


TextAlignはfmTextAlignLeftに設定されているので、文字も数字も全てが左に揃ってしまいます。
上のリストのなかで時間の項や一番右の数字の項のみ右揃えにするような設定は可能なのでしょうか?

色々探し回ったのですが、わからなかったもので、質問させていただきました。

A 回答 (2件)

こんにちは。



AddItem の場合は、状況が違ってきます。

"??0"

というのは、あくまでも、ワークシートのセルに設定するものですから、VBAの場合は、「@」を1文字に当てます。

ただし、なるべく、ワークシートからデータを取る場合は、RowSourceで取ったほうが楽で、反応も速いです。

AddItem を使用する場合は、絶対的ではありませんが、マニュアルなどをみると、以下のように配列を使って入れるようなことが、書かれているのではないかと思います。

ご提示になったコードをみると、2行目からスタートしているようですから、コードを換えてみました。研究してみてください。


Private Sub UserForm_Initialize()
Dim myRng As Range
Dim myList As Variant
Dim c As Variant
Dim i As Integer
'RowSource は空にすること
'A列で、行数を取る,シート名を指定しても可
Set myRng = Range("A2", Range("A65536").End(xlUp))
'配列の再定義
ReDim myList(myRng.Rows.Count - 1, 5)
For Each c In myRng
  'B2 のスタート(もしかしたら、A列が、IDだとしたら'ひとつずれるのかもしれません。
  ' myList(i,0) = c.Value ~myList(i,5) =Format$(c.Offset(,5).Value,"@@@@")
  myList(i, 0) = c.Offset(, 1).Value
  myList(i, 1) = Format$(c.Offset(, 2).Value, "yyyy/mm/dd")
  myList(i, 2) = Format$(c.Offset(, 3).Value, "hh:mm")
  myList(i, 3) = c.Offset(, 4).Value
  '4桁ある場合
  myList(i, 4) = Format$(c.Offset(, 5).Value, "@@@@")
 i = i + 1
Next c
 ListBox1.List() = myList
 Set myRng = Nothing
End Sub
    • good
    • 0
この回答へのお礼

大変参考になります。
どうもありがとうございました。
RowSourceも研究してみます。

お礼日時:2007/09/02 08:59

こんばんは。



ご質問には書かれていませんが、ListBox の ColumnCount をどうしているのとか、RowSource  をどのようにしているか、ということが気になりますね。

例えば、ワークシートから、ListBox に取り出すなら、
ColumnCount を 5 にしておいて

日にちの書式は、yyyy/mm/dd
時間の書式は、 hh:mm

一番右の数字の書式は、 ?0 または、??0
とすればよいはずです。

TextAlign は、Left のままにしてください。

そうでことでないのでしたら、もう少し具体的な情報を出してください。

ただ、個々の列に書式設定等をしたいのでしたら、枠線は出ますが、SpredSheet オブジェクトにすれば出来ます。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございました。
情報が足りなくてすみません。
ColumnCount=6で、各幅は0 pt;84 pt;75 pt;80 pt;80 pt;80 pt として、
一番左端には各データのIDを載せています(listbox.valueでそのIDが取得できるため)。
RowSourceは設定しておらず、additem等でexcelのシートよりリストのデータを取得しています。
For i=2 to Dmax
ListBox.AddItem Cells(i,1)
Listbox.List(i-1,1) = Cells(i,2)
・(省略)
Listbox.List(i-1,5) = Cells(i,5)
Next i
こんな感じです。

日にちと時間はWendy02さんの通りにして解決しました!

Listbox.List(i-1,2) = Fromat(Cells(i,2),"yyyy/mm/dd")
と記述して、期待通りの結果が得られました。
ありがとうございます。

Listbox.List(i-1,5) = Fromat(Cells(i,5),"??0")
としたところ、「?18」等と表示されてしまいます。
きっと?は違う文字なんじゃないかなあとおもうのですが、再度ご教授願えませんでしょうか?

お礼日時:2007/08/29 09:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A