MSFlexGridオブジェクトの文字列を変更する方法
- MSFlexGridオブジェクトを使用して、特定のセルに文字列を追加する方法について説明します。
- MSFlexGridオブジェクトで文字列に数字を付加すると、文字列が右揃えになる問題が発生します。
- この問題を防ぐためには、文字列を追加する前にセルのテキスト位置を左揃えに設定する必要があります。
- ベストアンサー
MSFlexGrid オブジェクトについて
MSFlexGrid で (1,1) (2,1) (3,1) .... (n,1)に文字列を入れました。 これら文字列の頭に数字を付加するため For t = 1 To n With MSFlexGrid1 .TextMatrix(t, 1) = t & "_" & .TextMatrix(t, 1) End With Next t としました。ところがこれを行うと左揃えだったものが右揃えになってしまいます。どうすれば、これを防げるでしょうか? 数字が頭にあるとこうなるようなのですが。 MSFlexGrid について他にも質問しているのでよろしければ見て下さい。
- Ryuku
- お礼率68% (81/119)
- Visual Basic
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
MSFlexGridの FormatStringで、左揃えしたい列の先頭にに「<」を入れましょう。
関連するQ&A
- マクロdictionaryオブジェクト書き換え
ここで教えていただいたマクロを シート1のF列を検索値として シート2のA列を検索しヒットしたら シート2の該当行のD列をシート1のAE列に転記。 データの2列目から行う。ヒットしない場合は 無 と転記。 と変更したくて記述を書き換えたらシート1が壊れてしまいました。 正しい記述を教えてください。 ↓教えていただいた書き換え前の正常動作する記述↓ Sub 検索() 'dictionaryオブジェクトを使用 'シート1のA列を検索値として 'シート2のA列を検索しヒットしたら 'シート2の該当行のE列をシート1のC列に転記 'データの2行目から行う。ヒットしない場合は無しと転記 Dim dic As Object Dim i As Long Dim v, w Dim t As Single t = Timer With Sheets("Sheet2") '返す値を指定E列 With .Range("E2", .Cells(.Rows.Count, 1).End(xlUp)) '検索する列指定 (1)=A列 v = .Columns(1).Value '返す値のある列指定 (5)=E列 w = .Columns(5).Value End With End With Set dic = CreateObject("scripting.dictionary") For i = 1 To UBound(v) dic(v(i, 1)) = i Next With Sheets("Sheet1") '検索値のある列指定 A列 With .Range("A2", .Cells(.Rows.Count, 1).End(xlUp)) v = .Value For i = 1 To UBound(v) If dic.exists(v(i, 1)) Then v(i, 1) = w(dic(v(i, 1)), 1) Else v(i, 1) = "無" End If Next '転記する列を指定 Offset(, 2)=検索値のA列より右2つ→C列 With .Offset(, 2) .ClearContents .Value = v End With End With End With Set dic = Nothing Debug.Print Timer - t End Sub ---- ↓書き換えておかしな動きになった物 ●の部分を変更しました↓ Sub 検索02() 'dictionaryオブジェクトを使用 'シート1のF列を検索値として 'シート2のA列を検索しヒットしたら 'シート2の該当行のD列をシート1のAE列に転記 'データの2行目から行う。ヒットしない場合は無しと転記 Dim dic As Object Dim i As Long Dim v, w Dim t As Single t = Timer With Sheets("Sheet2") '返す値を指定D列● With .Range("D2", .Cells(.Rows.Count, 1).End(xlUp)) '検索する列指定 (1)=A列 v = .Columns(1).Value '返す値のある列指定 (4)=D列● w = .Columns(4).Value End With End With Set dic = CreateObject("scripting.dictionary") For i = 1 To UBound(v) dic(v(i, 1)) = i Next With Sheets("Sheet1") '検索値のある列指定 F列● With .Range("F2", .Cells(.Rows.Count, 1).End(xlUp)) v = .Value For i = 1 To UBound(v) If dic.exists(v(i, 1)) Then v(i, 1) = w(dic(v(i, 1)), 1) Else v(i, 1) = "無" End If Next '転記する列を指定 'Offset(, 25)=検索値のA列より右25個→AE列● With .Offset(, 25) .ClearContents .Value = v End With End With End With Set dic = Nothing Debug.Print Timer - t End Sub
- ベストアンサー
- オフィス系ソフト
- エクセルでDictionaryオブジェクト
メリークリスマス! とはいうものの仕事が終わりません。 これまでエクセルでDictionaryオブジェクトを利用し、AN列にある人名データをKeyにしてT列にある金額の集計を行っていました。 条件 AN列のデータには重複するものが多いが同姓同名は存在しない。 T列には必ず数値が入力されている。 AN列にある人名ごとにT列にある金額の集計を行う。 省略してますが以下のようなコードです。 Sub test01() Dim myDic As Object Dim x As Long Dim myC As Range Dim ws As Worksheet Set myDic = CreateObject("Scripting.Dictionary") x = Cells(Rows.Count, "AN").End(xlUp).Row For Each myC In Range("AN1:AN" & x) '受取人名列 If Not myDic.Exists(myC.Value) Then myDic.Add myC.Value, Cells(myC.Row, "T").Value 'T列の金額 Else myDic(myC.Value) = myDic(myC.Value) + Cells(myC.Row, "T").Value '金額を加算 End If Next Set ws = Worksheets.Add(After:=ActiveSheet) With ws '新規ワークシート .Range("A1").Resize(myDic.Count, 1).Value = Application.Transpose(myDic.keys) 'A列にデータ .Range("B1").Resize(myDic.Count, 1).Value = Application.Transpose(myDic.Items) 'B列に結びつけ金額データ End With Set myDic = Nothing End Sub これでうまくできていたのですが、今回新しい条件が加わり、頭を悩ませております。 新たな条件とは、同じ表のN列にあるコード(数字8桁)のうち、例えば77777777のものがあれば、追加したワークシートのC列にフラグをたてるというものです。 どのようにすればできるでしょうか? よろしくお願いいたします。
- ベストアンサー
- Excel(エクセル)
- グリッドの使い方について
VB初心者です。 Excelからデータをグリッドに取り込んでグリッドで計算しているのですが、x(i, j) = MSFlexGrid1.TextMatrix(i, j) の文がいろいろ入力してみたのですが、エラーが出てしまいます。 それと計算するときに最初のセルを(3,3)などにしたい時にどうすれば良いのかわかりません。 教えていただければ幸いです。よろしくお願いします。 Dim goukei(10) As Double Dim x(20, 10) As Double For i = 1 To 20 For j = 1 To 10 x(i, j) = MSFlexGrid1.TextMatrix(i, j) Next j Next i For j = 1 To 10 goukei(j) = 0 Next j For i = 1 To 20 For j = 1 To 10 goukei(j) = goukei(j) + x(i, j) Next j Next i For j = 1 To 10 Text1.Text = goukei(j) Next j
- 締切済み
- Visual Basic
- エクセル TEXT関数を使うと左揃えになってしまう
エクセル2003です。 Text関数を使うと左揃えになってしまうのですが、 標準と同じ右揃えになる方法は有りますでしょうか。 具体的には A列が”EUR”の時、B列の数字 “#,##0.00” A列が”JPY”の時、B列の数字”#,##0” という式をIF関数とTEXT関数を使用して作ったのですが 全て左揃えになってしまうので困っています。 条件つき書式でも右揃えというのはありませんし、、、困っています。 何か解決策があればと思い質問しました。 宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルの書式設定!?教えてください
エクセル超初心者です。 列に数字がいくつか入っています。 例えば、A~J列に全て数字が入っているとします。 セルを右揃えに設定したので、 数字が右に全て揃うはずなのですが、1つのセルのみ右揃えに なりません。 右にひとつスペースが空いたような感じで、 揃ってくれません。 なにがおかしいのでしょうか? また、直し方を教えてください。 よろしくお願いいたします。
- ベストアンサー
- その他(Windows)
- Excelの「’」とセルの書式設定(文字列)の違い
こんばんわ。 Excelの文字列表示について、教えてください。 数字を入力する際に、先頭に「'」を入力すると 文字列として入力することが出来ますが、 数字が入っているセルのセルの書式設定から 「文字列」に表示形式を変更することとの 違いはなんなんでしょうか? やり方は違うけれど、結果は同じということでしょうか? 「'」を入力すると、データが文字そのものに変わり、 表示形式を変更すると、見た目だけ(左揃えになるなど) 文字列のように見えるだけで、データは 数字のままということなんでしょうか?? また、文字列として入力された数字を Value関数で数値に変換してしまうのと セルの書式設定で「数値」に変更するというものも 同じように、違いが良く分かりません。。。 もう、頭の中が「??」だらけです。 違いを教えていただけたら・・・と思います。 どうぞよろしくお願いいたします<m(__)m>
- ベストアンサー
- オフィス系ソフト
- Excel vba ListVew 右揃え
Excel vba ユーザーフォームにListVewを作成し、数値の部分は「,」付で右揃えにしたいのですが、全て左揃えで表示されます。右揃えにするにはどうしたら良いでしょうか? 以下のコードで使用しています。 'ListVew1に書出し Set rng = ActiveSheet.Cells(1, 1).CurrentRegion With 実績データ確認.ListView2 For i = 2 To rng.Rows.Count .ListItems.Add.Text = rng(i, 18).Value k = 1 For j = 19 To 28 .ListItems(i - 1).SubItems(k) = rng(i, j).Value .ListItems(i - 1).ListSubItems(k).ForeColor = rng(i, j).Font.Color k = k + 1 Next Next End With
- 締切済み
- Excel(エクセル)
- エクセルVBA(掛け算)
いつもおせわになります。 現在、下記のようなコードを書いてますがどうもうまくいきません。よろしくお願いいたします。 M列 = K列 × N列を6行目から最終行目で入れたくて下記のようなコードを書きました。 ところが・・・N列にはデータのない場合があるので、If~を入れてみました。ここまではうまくいったのですが、 O列 = K列 × P列のように数式を入れたい列が他にもあり、又同じコードを下記のように書いたら、P列にデータがないところで止まってしまいます。 '///////////////////////////////////////////// Dim wsS As Worksheet Dim r As Long Dim Srow As Long Set wsS = Worksheets("syukei") Srow = wsS.Range("D65536").End(xlUp).Row With Worksheets("syukei") For r = 6 To Srow If Cells(r, 12) = Noting Then r = r End If Cells(r, 13) = Cells(r, 11) * Cells(r, 12) Next End With With Worksheets("syukei") '↓////////ここらへんで止まる////////// For r = 6 To Srow If Cells(r, 14) = Noting Then r = r End If Cells(r, 15) = Cells(r, 11) * Cells(r, 14) Next End With End Sub 掛け算を入れたい行は、下記のようになっています。 M列=K列×L列 O列=K列×N列 Q列=K列×P列 S列=K列×R列 U列=K列×T列 W列=K列×V列 Y列=K列×X列 よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- EXCEL VBAのFor...Nextについて
VBA初心者です。よく理解していませんので、質問も的を得ていないかもしれませんが、ご指導宜しくお願いいたします。 現在、For...Nextを使った表計算をしています。 A列に「す」という文字が含まれていたら、B列の「す」の行に「あ」と「い」と「え」「か」のセルの合計をだす。C列、D列・・・最終列まで計算する。 上記VBAを作成する方法を教えて下さい。 A B C D E F G H I J K L 1 2 3 4 5 6 7 8 9 10 11 12 あ 1 2 3 4 5 6 7 8 9 10 11 い 10 20 30 40 50 60 70 80 90 100 110 う 20 30 40 50 60 70 80 90 100 110 120 え 40 50 60 70 80 90 10 20 120 130 30 お 50 60 70 80 90 10 20 30 130 140 40 か 60 70 80 90 10 20 30 40 140 150 50 す 私は表に1~12まで数字をインプットし下記のようなコードを考えました。 Sub 列合計() Dim i, k, l, m, n As Long j = 2 For i = 6 To 120 For k = 6 To 120 For l = 6 To 120 For m = 6 To 120 For n = 6 To 120 If Cells(i, 1) = "す" And Cells(k, 1) = "あ" And Cells(l, 1) = "い" And Cells(m, 1) = "え" And Cells(n, 1) = "か" Then Do While j <= Range("A2").End(xlToRight) Cells(i, j) = Cells(k, j) + Cells(l, j) + Cells(m, j) + Cells(n, j) j = j + 1 Loop Else: End If Next n Next m Next l Next k Next i End Sub この内容だとエラーが出てしまいます。 補足ですが、あいうえおかの順番はかわったり、間に他の行が入ったりします。 また今回はL列の間としましたが、もっと列が増え、最終列まで計算する方法を知りたいのですが、どうぞ宜しくお願い致します。 ※ofice2013です。
- 締切済み
- SE・インフラ・Webエンジニア
お礼
ありがとうございました。初めは幅が狭くなってどうすれば良いのかよく分からなかったのですが、何とか出来ました。後で幅を設定すればよいのですね。