プロが教えるわが家の防犯対策術!

こんにちわ。

WindowsXP/Excel VBAで、無料で使用できる
グリッドコントロールを探しています。

チェックボックスを追加できたりできると、
さらに嬉しいです。

お勧めのコントロールがあれば、教えてください。
有料でも、安価であれば結構です。
よろしくおねがいいたします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

お世話になります。



リストビューコントロールを使われてはいかがでしょう。
http://www.officetanaka.net/excel/vba/listview/i …

# VBA の場合、CheckBox プロパティってあったかな...。
    • good
    • 0
この回答へのお礼

こんにちわ。

おお、こんなコントロールがあったんですね。

使い方がちょっと変わってますが、これでいけそうです。

大変、ありがとうございました。
またよろしくおねがいいたします。

お礼日時:2006/05/05 21:18

フレキシブルグリッドをVB6エンタープライズを使っていますが、他のエディションでは無いのでしょうか?

    • good
    • 0
この回答へのお礼

こんにちわ。

フレキシブルグリッドは、.netからはVBとは別売りみたいですね。

私の場合はExcelVBA から使いたかったので、VBすらも購入しないで済むコントロールを探していましたが、
リストビューコントロールがまさに使えそうです。

またよろしくおねがいします。

お礼日時:2006/05/05 21:21

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qグリッドについて,エクセルのアドインについて

1)グリッド上で文字を直接入力したいのですが,どのようにすればよいのでしょうか。具体的には,エクセルのようにグリッド上をクリックしたら,そのグリッドがテキスト入力モードになるような方法を教えて頂きたいと思います。

2)MSFlexGridに描かれる垂直スクロールバーの,幅の値を得る方法を教えてください。(スクロールバーを表示させるとグリッドの右端が切れてしまうため)

3)エクセルのソルバーアドインを,VBから使用することはできますか? 複雑な回帰分析を行わせようと考えておりますので,できればエクセルのアドインをそのまま使えれば…,と考えております。

以上,よろしくお願いいたします。

Aベストアンサー

まず2つ質問です。
1.1番の質問はフレックスグリッドについての質問ですよね?
2.フレックスグリッドでなければいけないのですか?DataGridではダメなのですか?もしくは直接エクセルではダメなのですか?

わかる範囲で書きますね。
1番(仮にフレックスグリッドだと思って勝手に書きます)
基本的な標準機能では、存在しません。
マウス座標、表示上のLEFT/TOPのグリッド位置、グリッドの幅高さから計算して、テキストボックスを表示/非表示といった方法しか考えられませんが・・・

2番 現在スクロールバーが表示されてるか非表示されてるかは、Cols/RowsとWidthで自分で計算する方法しかわかりません・・・
幅/高さについては
Private Const SM_CXHSCROLL = 21&  '水平スクロールバーの矢印の幅
Private Const SM_CYHSCROLL = 3&   '水平スクロールバーの高さ
Private Const SM_CXHTHUMB = 10&   '水平スクロールバーのスクロールボックス(つまみ)の幅
Private Const SM_CXVSCROLL = 2&   '垂直スクロールバーの幅
Private Const SM_CYVSCROLL = 20&  '垂直スクロールバーの矢印の高さ
Private Const SM_CYVTHUMB = 9&   '垂直スクロールバーのスクロールボックス(つまみ)の高さ
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long

  Debug.Print GetSystemMetrics(SM_CXVSCROLL)
で、何とかなるのかな?
参考URL参照

3番 アドインはエクセルのセル型を読み取って、エクセル内部による処理を行います。基本的には無理だと思います。機能を生かすだけなら、一度エクセルにデータを貼り付けて、解析をさせて、結果を読み取る必要があります。しかしエクセル任せになるので、ダイアログなどが表示されるかもしれません。(未検証)

参考URL:http://www.microsoft.com/JAPAN/developer/library/jpsetupf/_win32_getsystemmetrics.htm

まず2つ質問です。
1.1番の質問はフレックスグリッドについての質問ですよね?
2.フレックスグリッドでなければいけないのですか?DataGridではダメなのですか?もしくは直接エクセルではダメなのですか?

わかる範囲で書きますね。
1番(仮にフレックスグリッドだと思って勝手に書きます)
基本的な標準機能では、存在しません。
マウス座標、表示上のLEFT/TOPのグリッド位置、グリッドの幅高さから計算して、テキストボックスを表示/非表示といった方法しか考えられませんが・・・

2番 現在ス...続きを読む

QEXCEL VBAで計算値を四捨五入、切り上げ、切捨てする方法

ネットで探してみたのですが、計算結果を四捨五入して特定のセルを
返すにはどうしたらいいのでしょうか?

Sub hokangosa()

Dim ZPS As Double
Dim ZPOS As Double
Dim DMN As Double
MsgBox (" >>> 補間誤差自動計算 <<< ")
MsgBox (" >>> 初期値入力します <<< ")
ZPS = InputBox(">>> ステップを入力してください<<<")
ZPOS = Sheet1.Cells(22, 4).Value
DMN = ZPOS / ZPS
Sheet1.Cells(23, 6).Value = DMN
End Sub

ここでDMNの値を四捨五入したいです。

またこれとは別に切上げ、切捨ても教えていただけるとありがたいです。

Aベストアンサー

DMN = Application.WorksheetFunction.Round(ZPOS / ZPS, 0)
で、四捨五入
DMN = Application.RoundDown(ZPOS / ZPS, 0)
で切り捨て
DMN = Application.RoundUp(ZPOS / ZPS, 0)
で切り上げです。

引数で、対象桁を変更できます。

QExcelVBA でリストリストボックスに列見出しをコーディングでつける

エクセルVBAのフォームにリストボックスを作り、データーベースから読み出したデータを表示させています。

この時、各列にテーブル名とはちがう列名をつけたいのですが、シートに記述するのではなく、コーディングでつける事は出来ませんか?

ControlTipTextに「test1;test;test3;」と指定してみたりしましたが、駄目でした。

どなたかご教授、あるいは出来ません、シートに隠しか方法はありません、と全否定をしてください。

Aベストアンサー

Wendy02 です。配列で入れる方法を考えてみましたが、できませんでした。

結局、他の方法としては、ListBox の 上に、白のLabel をそれぞれのColumnにあわせて、表示するぐらいしか、思いつきません。(これは、論外でしょうね)

列見出し(フィールド)は、もともと、Excelのワークシートの、データベース用の仕様のひとつだから、Rangeオブジェクトでしか、ListBox の Header に入れることは、出来ないようです。

Qリストビューの項目の内容を変更する方法は?

お世話になります。

VS2005を使用しています。
VB.NETのリストビューで一覧を作ったのですが、その中の項目の内容をプログラム内から変更することは出来ないのでしょうか?
色々検索してみたのですが見つかりませんでした。

現在、リストビューには4つの項目があり、100行くらい有ります。
(1つ目の項目にはチェックボックス付き)
その中の、項目の内容を変更したいのです。

やはり、以下のようにしなければいけないのでしょうか。
1)一旦対象行の内容を保存
2)対象行を削除
3)保存先で内容変更
4)リストビューに再追加

よろしくご享受下さい。

Aベストアンサー

ListView1.Items(1).SubItems(2).Text = "ABC"
とかでは?

QListView 項目の選択/選択解除について

 ListViewに表示する情報が1件しかないとき、その情報が常に選択された状態なので、
困っています。

 1件しかなくても、選択したり、選択を解除したりすることは出来ないのでしょうか?

 または、ListViewでは出来ないけど、他のコントロールなら出来ると言う情報があり
ましたらぜひ教えてください。

 よろしくお願いします。

Aベストアンサー

失礼しました
× HitItem
○ HitTest
でした。

Private Sub Form_Load()
  Dim i    As Integer
  
  With Me.ListView1
    .View = lvwList       '//表示形式:一覧
    .HideSelection = False   '//リストビューがフォーカスを失っても、選択状態を保持する
    .MultiSelect = True     '//複数選択可能
    
    'ダミーデータの登録
    .ColumnHeaders.Add , , "ヘッダ"
    For i = 1 To 10
      Me.ListView1.ListItems.Add , , "Dmy Data" & i
    Next i
 
  End With
End Sub

Private Sub ListView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  Dim itmX  As ListItem
  
  With Me.ListView1
    'マウス位置のアイテムを取得
    Set itmX = .HitTest(x, y)
    '取得できたなら未処理
    If Not (itmX Is Nothing) Then
      GoTo PGMEND
    End If
    
    '現在選択中のアイテムを取得
    Set itmX = .SelectedItem
    '取得できなかったなら未処理
    If (itmX Is Nothing) Then
      GoTo PGMEND
    End If
    
    '選択解除
    Set .SelectedItem = Nothing
    itmX.Selected = False
  End With
  
PGMEND:
  Set itmX = Nothing
End Sub

失礼しました
× HitItem
○ HitTest
でした。

Private Sub Form_Load()
  Dim i    As Integer
  
  With Me.ListView1
    .View = lvwList       '//表示形式:一覧
    .HideSelection = False   '//リストビューがフォーカスを失っても、選択状態を保持する
    .MultiSelect = True     '//複数選択可能
    
    'ダミーデータの登録
    .ColumnHeaders.Add , , "ヘッダ"
    For i = 1 To 10
      Me.ListView1.ListItems.A...続きを読む

Qcheckbox付きListViewで デフォルトチェック

チェックボックス付きのListViewコントロールで初期値としてチェックボックスにチェック
をして表示したいと思っております。

Listviewにデータを追加して(subitemもあるため)その後
ListView1.Item(i).Selected = True
をしているのですが、チェックして表示されません。

項目が表示された後、何れかの項目をチェックしようとするとチェックが表示されます。

どのようにすれば最初から表示されるのでしょうか?

初歩的な質問かもしれませんが、お願い致します。

Aベストアンサー

Selectedではなく CheckedプロパティをTrueに設定しましょう

ListView1.Item(i).Checked = True
といった具合です

Qエクセル VBA ユーザーフォームを閉じる

ユーザーフォームを開く時は
UserForm1.Showですが
閉じる時は?
UserForm1.Close
だとコンパイルエラーになります。
End
にするしかないですか?

Aベストアンサー

Unload Me とか Unload UserForm1 でユーザーフォームを閉じることができます。

QListViewから選択中の文字列を取得

VB2005の初心者です。
タイトル通り、ListViewから選択中の文字列によって処理を変えるプログラムを構築しようとしているのですが、うまくいきません。

ComboBoxの場合では
Private Sub button1_Click~
If ComboBox1.SelectedItem = "テスト" Then
処理
End if

でうまくいったのですが、ListViewの場合では
Private Sub button1_Click~
If ListView1.SelectedItems = "テスト" Then
処理
End if

と指定すると
「エラー1これらの引数で呼び出される、アクセス可能な '=' がないため、オーバーロードの解決に失敗しました」
とエラーがでます。


ListViewから選択中の文字列を取得するには「.SelectedItems」では取得できないのでしょうか?
VBに詳しい方ご教授お願いします。

Aベストアンサー

ComboBoxはSelectedItemと単数形ですよね
ListViewの場合SelectedItemsですから選択された複数の項目といったことになります

SelectedItemsはコレクションになるので 最初の選択項目なら
ListView1.SelectedItems(0)となりますので

if ListView1.SelectedItems(0).Text = "テスト" Then
といった具合に使います

もっとも選択アイテムない場合も考えられるので上記の前に
If ListView1.SelectedItems.Count = 0 then
  Exit Sub
End if
を追加したほうがいいかもしれません

Qユーザーフォームを表示中にシートの操作をさせるには

ユーザーフォームを表示中にシートの操作をさせる事はできるのでしょうか。
セルへの入力、画面のスクロールなどは、ユーザーフォームからマクロを実行させたり、.hideでユーザーフォームを一時的に隠すなどすればいいのでしょうが、そういう手段をとらないでユーザーフォームを表示中にシートの操作をさせる事はできるのでしょうか。

Aベストアンサー

ユーザフォームの
ShowModalプロパティを
falseにすればよいかと。

QEXCEL VBAマクロ作成で、他のEXCELからデータを取り込みたい

メインプログラム(EXCEL VBA)より、
他のフォルダーにあるEXCELの項目の内容を取り込みたいです。
たとえば他のフォルダーのEXCELのRange("A2:A3").ValueをメインプログラムのRange("C2:C3").Valueにセットしたい時です。

・コマンドボタン押したら、どこのEXCELから取り込むかのポップアップ(?)は、表示はできてます。
・作業者が選んだパスとブックもMsgBoxで表示できてるので、もらう相手の場所も取得できてます。

・となると次はOPEN,INPUTですか?
テキストデータの取り込みですと、Inputでそのバッファを定義してるのですが、なんか違うような。。。

よろしくお願いします!

Aベストアンサー

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Cells(2, 2).Value ' 相手シートの B2 の値を自分自身の A1 に書き込む

readBook.Close False ' 相手ブックを閉じる
Set readSheet = Nothing
Set readBook = Nothing

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Ce...続きを読む


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

人気Q&Aランキング