Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


301 / 500 ページ ←次へ | 前へ→

【7202】Re:コンボボックスを使用した抽出
回答  中西 健  - 06/2/1(水) 11:15 -

引用なし
パスワード
   ABCをクエリのフィールドに付け加えなければなりません。
・ツリー全体表示

【7201】Re:コンボボックスを使用した抽出
発言  mayu  - 06/2/1(水) 11:09 -

引用なし
パスワード
   こんにちわ

一度はうまくいきました
まず練習用にと データをコピーしたもので作成したところ
うまく作動しました。
よし、次は本番と思って作ってみたところ動いてくれません(^^;

リストから選んだときに パラメータがでます
これは ABCどれを選んでも同じ結果でした。
パラメータがでたとき空白のままOKを押すとエラーは閉じます
キャンセルを押したとき カレントデータがありません。
というエラーがで、そのなかのデバックというのをおすと
コードがでてきて、filter=コンボボックス0 に
黄色い線が入ります。

ここで気づいたのですが、コピーで作成していたときは
filter=コンボボックス0 ゼロの部分が全角でした
これは半角でうっても 全角に自動的に変換されていました
しかし 本体では 全角で打っても半角に自動的に変換されます

何か関係があるのでしょうか・・・?
・ツリー全体表示

【7200】集計について
質問  初心者  - 06/2/1(水) 11:03 -

引用なし
パスワード
   初歩的な質問ですみません。
↓のようなテーブルがあって、

商品    種別
-------------
A    いす
B    テーブル
C    棚
A    いす
C    棚
A    いす

↓のような合計数量を出したいのですが、
クエリで種別の集計クエリを使うのは分かるのですが、
それだけだと「クロス集計クエリを作成するには、
1つまたは複数の行見出しオプション、1つの列見出しオプション、
1つの値をオプションを指定する必要があります。」とエラーが出てしまいます。
何が足りないのでしょうか、宜しくお願いします。

種別    数量
-------------
いす     3
テーブル     1
棚     2
・ツリー全体表示

【7199】Re:AceessからExcelを操って「図のリンク...
お礼  nn  - 06/2/1(水) 10:52 -

引用なし
パスワード
   ▼小僧 さん:
おはようございます。
お返事ありがとうございます。

>画面の切り替わり処理に関しては ScreenUpdating プロパティ を False にする事で
>ちらつきを抑える事が出来ます。
>詳細は Excel のヘルプを参考になさって下さい。

早速調べてみました!
こんなプロパティがあったんですね、なるほどです。
教えて下ってありがとうございます。


(ヘルプからの引用) -----------------------------

ScreenUpdating プロパティ

True の場合、マクロの実行中に画面表示を更新します。値の取得および設定が可能です。ブール型 (Boolean) の値を使用します。

解説
マクロの速度を向上させるため、画面を更新しないようにします。この場合、マクロの処理過程は見ることができませんが、実行速度が速くなります。

マクロが終了した後は、ScreenUpdating プロパティの値を True に戻してください。

------------------------------------------------

>Select、Activate を使わない理由ですが、まず速度面の問題があります。
>
>Office TANAKA さん:
>http://www.officetanaka.net/excel/vba/speed/s2.htm
>
>紹介させて頂いたサイトにも記載されていますが、
>Select、Activate メソッドは使用しなくても良い場合が殆どです。
>
>「りんごを選んで、それを食べる」
>「りんごを食べる」
>
>より間違いの起こらない記述でコードが書いた方が良いですよ、という事ですね。

確かに、Selectしないで処理を実行させたほうが、処理速度が向上しました。
これからは注意してプログラミングしようと思います。
ありがとうございました。
・ツリー全体表示

【7198】Re:クエリ内文字列の分解計算?
お礼  Yazika  - 06/1/31(火) 19:50 -

引用なし
パスワード
   小僧さん
問題解決しました。
ありがとうございました。
・ツリー全体表示

【7197】Re:AceessからExcelを操って「図のリンク...
回答  小僧  - 06/1/31(火) 17:38 -

引用なし
パスワード
   ▼nn さん:
こんにちは。

>どういう理由なんですか?
>ExcelをVisibleにしていると画面がバチバチ切り替わってうっとうしいから
>ですか?

画面の切り替わり処理に関しては ScreenUpdating プロパティ を False にする事で
ちらつきを抑える事が出来ます。
詳細は Excel のヘルプを参考になさって下さい。

Select、Activate を使わない理由ですが、まず速度面の問題があります。

Office TANAKA さん:
http://www.officetanaka.net/excel/vba/speed/s2.htm

紹介させて頂いたサイトにも記載されていますが、
Select、Activate メソッドは使用しなくても良い場合が殆どです。

「りんごを選んで、それを食べる」
「りんごを食べる」

より間違いの起こらない記述でコードが書いた方が良いですよ、という事ですね。
・ツリー全体表示

【7196】Re:コンボボックスを使用した抽出
回答  中西 健  - 06/1/31(火) 16:43 -

引用なし
パスワード
   コンボボックスの名前を「コンボボックス0」にしてください。
値集合ソースはA;B;Cと入力すればよいです。
・ツリー全体表示

【7195】Re:コンボボックスを使用した抽出
発言  mayu  - 06/1/31(火) 15:16 -

引用なし
パスワード
   こんにちわ

> 値集合タイプは値リストで

  値集合タイプは値リストに設定しました。

> 値集合ソースはA;B;Cです

  この集合ソースの設定の仕方がわかりません。
  ドロップダウンリスト状態になっており
  指定できるのは 3つです

  T_住所A
  T_住所B 
  q_一覧・・・上記二つのテーブルを一つにするためのもの
  
ちなみに、q_一覧を利用して作ったF_一覧に 
今作成している コンボボックスをつけています

> A,B,Cはyes/no型のフィールド名と仮定しています。

 はい F_住所A、F_住所Bには yes/no型のABCを作っています

> Private Sub コンボボックス0_AfterUpdate
>  Filter = コンボボックス0
>  FilterOn = True
> End Sub

  上記コードを入れたところ コンパイルエラーというものがでました
  一行目の Private sub・・・の部分に黄色く線が入りました
  コードは更新後処理に入力しました
  コンボボックスの中には 集合ソースで選択したもの
  (上記で紹介した T_住所A、T_住所B、q_一覧のどれか)が
  表示されます。

よろしくお願いします。
  
・ツリー全体表示

【7194】Re:AceessからExcelを操って「図のリンク...
お礼  nn  - 06/1/31(火) 14:52 -

引用なし
パスワード
   ▼小僧 さん:
お返事ありがとうございます。
教えていただいたやり方で処理をすることが出来ました!
ありがとうございました。

>>とりあえず Excelのマクロで「図のリンク貼り付け」を行うコードを作り、
>>それをAccessで動かそうとしているのですが、
>
>ExcelVBA でも同じ事が言えますが、Select、Activate は
>なるべく使わない方が無難ですよ。
うーん??
どういう理由なんですか?
ExcelをVisibleにしていると画面がバチバチ切り替わってうっとうしいから
ですか?
(・・・まさかね)
・ツリー全体表示

【7193】Re:クエリ内文字列の分解計算?
回答  小僧  - 06/1/31(火) 12:37 -

引用なし
パスワード
   ▼Yazika さん:
こんにちは。

>「(Num - 1)」の役割について、調べましたが、わかりませんので、
>教えていただけませんか?

Mojiretu = "月,火,水,木,金"

strTmp = Split(Mojiretu,",")(0)

'→ strTmp は "月"

strTmp = Split(Mojiretu,",")(1)

'→ strTmp は "火"

配列の最小の添字は指定しない限り 0 から始まりますので、
n 番目の文字を取り出す為に n-1 を括弧内に入れています。
・ツリー全体表示

【7192】Re:クエリ内文字列の分解計算?
質問  Yazika  - 06/1/31(火) 11:46 -

引用なし
パスワード
   小僧さん
Gin_IIさん
こんにちは。
お蔭様で、問題解決しました。
本当にありがとうございました。

「(Num - 1)」の役割について、調べましたが、わかりませんので、
教えていただけませんか?
・ツリー全体表示

【7191】選択したレコードの内容をテキストBOXへ表...
質問   E-MAIL  - 06/1/31(火) 10:33 -

引用なし
パスワード
   フォーム[F_データ入力]にsubフォーム[Fsub_表示]を作成しています。
[Fsub_表示]は、抽出結果を帳票形式で表示しているのですが、ある一つの
レコードを選択した時に、[F_データ入力]のテキストBOX[txt001]にデータ
を表示したいと思っています。
表示するデータはテーブル[tbl_実績一覧]フィールド名称は[課題番号]となります。
ご教授お願い致します。
・ツリー全体表示

【7190】Re:コンボボックスを使用した抽出
回答  中西 健  - 06/1/30(月) 22:20 -

引用なし
パスワード
    mayuさんこんばんは。
 やっぱりこんな感じでしょう。
 「コンボボックス0」はコンボボックスの名前です。
 値集合タイプは値リストで
 値集合ソースはA;B;Cです
 A,B,Cはyes/no型のフィールド名と仮定しています。

 Private Sub コンボボックス0_AfterUpdate
  Filter = コンボボックス0
  FilterOn = True
 End Sub
・ツリー全体表示

【7189】Re:コンボボックスの表示について
お礼  Dis  - 06/1/30(月) 20:53 -

引用なし
パスワード
   ご回答ありがとうございました^^

こんなのあるって全然知りませんでした。私の努力不足でした。
これでも十分使えそうです。テーブルのデーター自体には何の親子関係もないので、ダミーを入れて試してみようと思います
ありがとうございました。
・ツリー全体表示

【7188】Re:矢印のだしかた
質問  たぬき  - 06/1/30(月) 17:51 -

引用なし
パスワード
   「時刻のコンソール」とはどんなことですか?
・ツリー全体表示

【7187】Re:クエリ内文字列の分解計算?
回答  小僧  - 06/1/30(月) 14:03 -

引用なし
パスワード
   ▼Yazika さん、Gin_II さん:
こんにちは。

>クエリ内で、解決したいです。

ユーザ定義関数を使ってよいのであれば、

標準モジュール内に

Function Bunkatsu(strName As String, Syubetsu As String, Num As Long)
On Error Resume Next
Dim strData As String
  strData = Split(strName, "×")(Num - 1)
  Select Case Syubetsu
    Case "数量"
      Bunkatsu = IIf(Val(strData) = 0, "", Val(strData))
    Case "単位"
      Bunkatsu = Replace(strData, Val(strData), "")
  End Select
End Function

と記述。この Function プロシジャを

数量1: bunkatsu([規格],"数量",1)
単位1: bunkatsu([規格],"単位",1)

のように呼び出す事が可能です。
・ツリー全体表示

【7186】Re:クエリ内文字列の分解計算?
回答  Gin_II  - 06/1/30(月) 13:41 -

引用なし
パスワード
   >その文字列は、
>数字単位×数字単位×数字単位で構成されています。

区切りが、必ず × でされているのなら、Split 関数を使えば分割できます。
VAL 関数を使えば、先頭の数値を取得することができると思います。
・ツリー全体表示

【7185】Re:コンボボックスを使用した抽出
発言  mayu  - 06/1/30(月) 11:46 -

引用なし
パスワード
   お返事ありがとうございます。
確認が遅れてすみません。

> 検索1,検索2はどんな風に実現されているのですか。

現在しようしている、50音検索はボタンで表記しており、

検索1 は

Private Sub fra検索1_AfterUpdate()

Dim strCTR As String

Me!fra検索2.Value = 0
Me!fra検索2.Visible = True

Select Case fra検索1
Case 1: strCTR = "[ア−オ]"
Case 2: strCTR = "[カ−ゴ]"
Case 3: strCTR = "[サ−ゾ]"
Case 4: strCTR = "[タ−ド]"
Case 5: strCTR = "[ナ−ノ]"
Case 6: strCTR = "[ハ−ボ]"
Case 7: strCTR = "[マ−モ]"
Case 8:  strCTR = "[ヤ−ヨ]"
Case 9: strCTR = "[ラ−ロ]"
Case 10: strCTR = "[ワ]"

Case Elese
Me.FilterOn = False
 Me!fra検索2.Visible = True
 Me!fra検索2.Value = 0
 Me!opt22.Visible = True: Me!opt24.Visible = True
Exit Sub
End Select

If Me!fra検索1.Value = 10 Then
Me!fra検索2.Visible = False

ElseIf Me!fra検索1.Value = 8 Then
  Me!opt22.Visible = False: Me!opt24.Visible = False
Else
  Me!opt22.Visible = True: Me!opt24.Visible = True
End If

Me.Filter = "フリガナ Like'" & strCTR & "*'"
 Me.FilterOn = True
End Sub

検索2は

Private Sub fra検索2_AfterUpdate()
Dim Siin, Boin, kanaCode As Long
Dim StrCriteria As String
If Me!fra検索1.Value = 0 Or Me!fra検索1.Value = 55 Then
 Me!fra検索2 = 0
 Exit Sub
 End If
 
 Boin = Me!fra検索1.Value
 Siin = Me!fra検索2.Value
 
 kanaCode = 176 + (Boin - 1) * 5 + Siin
 
 kanaCode = kanaCode + (kanaCode = 214)   'ユ=213
 kanaCode = kanaCode + (kanaCode = 216) * 2 'ヨ=214
 
 kanaCode = kanaCode + (kanaCode > 216) * 2 'ラ=217
 
 StrCriteria = Chr$(kanaCode)
 
 Me.Filter = "Left([フリガナ],1)Like'" & StrCriteria & "'"
 Me.FilterOn = True
 
End Sub

となっております。

アクセスに関して初心者ですので、これも他のHPより
紹介されていた物を利用したものです
http://www.kyoutoku.co.jp/msaccess.htm
他にいい方法があれば・・・とも考えているのですが・・・

これはさておき、今やりたいのはコンボボックスです
ドロップダウンボタンを押したら 分類がでてきて一つを選ぶ形式ですよね?
テキストボックスの横に▼がついたような形のやつです(^^;
どうでしょうか・・・?
・ツリー全体表示

【7184】クエリ内文字列の分解計算?
発言  Yazika  - 06/1/30(月) 11:41 -

引用なし
パスワード
   こんにちは
文字列の分解作業を行ないたいですが、その方法はわからなくて、
困っています。
クエリ内で、解決したいです。
ご伝授ください。
その文字列は、
数字単位×数字単位×数字単位で構成されています。
規格のフィールドを使って、数量1、単位1、数量2、単位2、数量3、単位3
に分解したい。
規格            数量1 単位1 数量2 単位2 数量3 単位3
1.5g×10枚×12打      1.5  g    10   枚   12    打
10kg×5箱          10  kg   5    箱
5枚×5打×1箱        5   枚   5    打   1    箱
・ツリー全体表示

【7183】Re:フォームでのデータ抽出
回答  小僧  - 06/1/30(月) 9:06 -

引用なし
パスワード
   ▼ユリ さん、ふくちゃんさん:
おはようございます。

>Dim strName As Integer
>でどうなりますかね?

Inputbox 関数の戻り値はVariant型(内部処理String型)ですので
数値型にしてしまうと数値以外の値(キャンセルも含め)が返されると
エラーになってしまいます。

エラートラップを使って回避するか、
Variant型で受けて数値かどうかを判断させるのが一般的だと思いますよ。

Private Sub Form_Open(Cancel As Integer)
Dim VarRet As Variant

  VarRet = InputBox("名前を入力してチョ!!", "基フォーム")

  If Not IsNumeric(VarRet) Then
    MsgBox "番号が間違っています。"
    Cancel = True
  Else
    Me.Filter = "ID=" & VarRet
    Me.FilterOn = True
  End If
End Sub

また、数値型を判断させる場合、「'」で括る必要はありません。
・ツリー全体表示

301 / 500 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
1084681
(SS)C-BOARD v3.8 is Free