フィールドに「メイン/大根 人参 きぬさや/副菜/ほうれん草 しらす」
と あるとして、レポートで出力するときには

メイン
 大根 人参 きぬさや
副菜
 ほうれん草 しらす

と 出したいのですがどうすればいいのでしょうか?
(ちなみに、この入力方法は変えられないとして)
(桐のデータなんです)

ついでといっちゃなんなんですが、クエリで式を作って、プロパティで書式を「標準」にしたのですが、カンマがつかないのはどうしてなんでしょう?

A 回答 (3件)

Access2000からの新機能ですがReplace関数を使えば出来そうですね。



下記と同様にコントロールソースに
=Replace([元のフィールド名],"/",chr(13) & chr(10))
として下さい。
chr(13) & chr(10)で改行コードに置き換えています。
    • good
    • 0

すみません、誤植があったので再投稿です。




VBA内で書く場合は、
元のフィールドを一文字ずつチェックして、スラッシュをvbCRLFに置き換えれば出来ますよ。

Function RepMoji(strMoji As String) As String

Dim intCNT As String

RepMoji = ""

For intCNT = 1 To Len(strMoji)
if Mid$(strMoji,intCNT,1)="/" Then
RepMoji=RepMoji & vbCRLF
Else
RepMoji=RepMoji & Mid$(strMoji,intCNT,1)
End If
Next

End Function

これで新しいコントロールボックスのコントロールソ
ースに「=RepMoji(元のフィールド名)」とすれば、表示されるはずです。
元のフィールドは非表示にして置いておかないとダメ
ですが。

書式の件はわかりませんが常にカンマ編集したいので
したら
Format(式,"#,##0.00;-#,##0.00;0.00;''")
としてみては?

この回答への補足

早速の回答ありがとうございます。
ちなみにVBAを使わないでやる方法はあるのでしょうか?

補足日時:2001/09/06 16:44
    • good
    • 0

VBA内で書く場合は、


元のフィールドを一文字ずつチェックして、スラッシュをvbCRLFに置き換えれば出来ますよ。

Function RepMoji(strMoji As Strin) As String

Dim intCNT As String

RepMoji = ""

For intCNT = 1 To Len(strMoji)
if Mid$(strMoji,intCNT,1)="/" Then
RepMoji=RepMoji & vbCRLF
Else
RepMoji=RepMoji & Mid$(strMoji,intCNT,1)
End If
Next

End Function

これで新しいコントロールボックスのコントロールソ
ースに「=RepMoji(元のフィールド名)」
とすれば、表示されるはずです。

元のフィールドは非表示にして置いておかないとダメ
ですが。


書式の件はわかりませんが常にカンマ編集したいので
したら
Format(式,"#,##0.00;-#,##0.00","0.00","")
としてみては?
    • good
    • 0

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

関連するカテゴリからQ&Aを探す

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

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

QChr(13)とChr(10)の違いは?

myStr = Replace(myStr, Chr(13), "")

myStr = Replace(myStr, Chr(10), "")

で、改行を置換しているのですが、どちらかでも改行できる時や
どちらかじゃないと改行できない時があります。

そもそもChr(13)とChr(10)の違いはなんでしょう?
どちらも改行ですよね?
何が違うのでしょう?

Aベストアンサー

こんにちは。お邪魔します。

Chr(10) ・・・ ラインフィード ・・・ 略して、Lf

Chr(13) ・・・ キャリッジリターン ・・・ 略して、Cr

改行文字に何を使うのかはアプリケーションが規定するものです。

Win・Office環境では
上のふたつを組合わせた改行[CrLf]を使うことが多いと思います。
次に[Lf]、そして、[Cr]

なので、ソースによっては
  myStr = Replace(myStr, vbCrLf, "")
と、一発で置換できるケースも少なくないです。
■ソースごとに改行文字を確認しておくことから始めた方が有利になります。■

ひとまず、VBAでの改行の扱いに慣れるには
■VBAで用意された文字列定数について知っておいた方がよいと思います。■
 VBE(Visual Basicの編集画面)が開いている状態で、
 F2 キー → オブジェクトブラウザー起動
 検索小窓に、vbCrLf、とタイプして、検索ボタン
 VBA.Constantsクラスのメンバーが表示され
 その中にすべての改行文字(文字列定数)が含まれています。
 そのまま、F1 キーでヘルプを表示します。
詳しい説明はヘルプを読む方がいいでしょう。

実践的な話として、
Chr(10)やChr(13)は関数の戻り値です。
対して、
vbLfやvbCr(またはvbCrLf)は定数です。
定数で済ませられるなら、定数の方が何かと有利です。
定数の名前は略号ですから、実態をイメージし易くなっています。
定数の扱いに慣れることをお奨めします。
例)
  myStr = Replace(myStr, vbLf, "")
  myStr = Replace(myStr, vbCr, "")
  myStr = Replace(myStr, vbCrLf, "")

もしも文字列定数を先に覚えていたなら、疑問にもならなかったのかも知れませんね。
私の場合は、改行の何たるかを覚える前に文字列定数覚えていて、困ることありませんでしたから。

以上、ご参考まで。

こんにちは。お邪魔します。

Chr(10) ・・・ ラインフィード ・・・ 略して、Lf

Chr(13) ・・・ キャリッジリターン ・・・ 略して、Cr

改行文字に何を使うのかはアプリケーションが規定するものです。

Win・Office環境では
上のふたつを組合わせた改行[CrLf]を使うことが多いと思います。
次に[Lf]、そして、[Cr]

なので、ソースによっては
  myStr = Replace(myStr, vbCrLf, "")
と、一発で置換できるケースも少なくないです。
■ソースごとに改行文字を確認しておくことから始めた方が有利...続きを読む

Qメイン/サブレポートのコントロール表示について

環境:XP&ACCESS2003
サブレポートがメインレポートのほぼ中央に位置するレポートを作成しています。
サブレポートの下には、メインレポートのデータが数件表示されます。(連結コントロール)
サブレポートの元となるテーブルのデータがゼロ件の時があります。
(受注番号で連結)
サブレポートの元となるテーブルのデータがゼロ件の場合、メインレポートのサブレポート以下のデータがサブレポート分だけ上に表示される方法をご存知の方、教えてください。
よろしくお願いします。

Aベストアンサー

レポートの詳細でサブレポートの高さを最小にして配置しその下にメインレポートのコントロールを配置し詳細の高さもコントロールを含めた最初の高さに調整すればサブフォームに表示するデータがあればレコード分表示し無ければサブフォームは非表示の状態になると思うのですが・・。それではダメなのでしょうか。

別の方法
サブフォームを詳細に配置しメインレポートのデータを表示するコントロールをグループフッターを作りそこに配置する。メインレポートの詳細部分フォーマット時にサブレポートで使用しているテーブルをDCountでレコード数を求めて値が0の場合詳細部をFalseとして表示させない。

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
If DCount("*", "サブレポートで使用しているテーブル名") = 0 Then
Me.詳細.Visible = False
Else
Me.詳細.Visible = True
End If
End Sub

別の方法としてサブレポートで表示するデータがある時に出力するレポート1と無い場合にサブレポートを除いた同じ内容のレポート2を用意しておきサブレポートの元となるテーブルのレコードが0件の場合と0件でない場合で出力するレポートを変える方法。
フォームのレポートを出力するボタンのイベントに
Private Sub レポート出力ボタン_Click()
Dim stDocName As String
If DCount("*", "サブレポートで使用しているテーブル名") = 0 Then
stDocName = "レポート2"
DoCmd.OpenReport stDocName, acNormal
Else
stDocName = "レポート1"
DoCmd.OpenReport stDocName, acNormal
End If
End Sub
として出力するレポートを変える。
こんな感じでどうでしょうか。

レポートの詳細でサブレポートの高さを最小にして配置しその下にメインレポートのコントロールを配置し詳細の高さもコントロールを含めた最初の高さに調整すればサブフォームに表示するデータがあればレコード分表示し無ければサブフォームは非表示の状態になると思うのですが・・。それではダメなのでしょうか。

別の方法
サブフォームを詳細に配置しメインレポートのデータを表示するコントロールをグループフッターを作りそこに配置する。メインレポートの詳細部分フォーマット時にサブレポートで使用して...続きを読む

QエクセルVBAのChr(10)の挿入と削除

宜しくおねがいします


現在結合されたセルがありそのセル内に他のプログラムから
下記の値が挿入されるようになっています。

あいうえお
かきくけこ
さしすせそ
たちつてと
(Chr(10)の改行)
(Chr(10)の改行)
(Chr(10)の改行)
(Chr(10)の改行)


他のプログラムから送られてくる値は”あ行”の1行だけだったり
”ま行”までの7行あったりとその都度変わってきます。
文字数も”あ”の1文字だけだったり”あああいいいうううえええおおお”と
文字数も変わります。

しかし下の4行分の”Chr(10)の改行”の数は変わりません。


やりたいことは↓

コマンドボタンを二つ作り、ボタンを押すたびに下にあるChr(10)の改行を
挿入したり削除したりしたいのですがどのようにすればよいのでしょうか?
追加ボタンを2回押すとChr(10)の改行が6行分になり
そこから削除ボタンを3回押すとChr(10)の改行が3行分になる・・・という感じです。


試しにマクロの記録で

セルを選択して改行を削除

をしてみたのですが思うような動きをしてくれません。

なぜChr(10)なのかとかいうのは聞かないでください・・・
そこから説明すると長くなるので。

宜しくおねがいします


現在結合されたセルがありそのセル内に他のプログラムから
下記の値が挿入されるようになっています。

あいうえお
かきくけこ
さしすせそ
たちつてと
(Chr(10)の改行)
(Chr(10)の改行)
(Chr(10)の改行)
(Chr(10)の改行)


他のプログラムから送られてくる値は”あ行”の1行だけだったり
”ま行”までの7行あったりとその都度変わってきます。
文字数も”あ”の1文字だけだったり”あああいいいうううえええおおお”と
文字数も変わります。

しかし下の4行分の”Chr(10)の改行”の数は変わ...続きを読む

Aベストアンサー

Sub CommandButton1_click()
 activecell.value = activecell.value & vbLf
End Sub

Sub CommandButton2_click()
 dim buf as string
 buf = activecell.value
 If right(buf, 1) = vbLf then
 activecell.value = left(buf, len(buf) - 1)
 end if
End Sub

単純に足したり削ったりするだけのようですが。

QWIN版「桐」の講習(というかスクーリングというか)

よろしくお願いいたします。

現在、会社でDOS版「桐」を使っておりまして、近々にWIN版へ移行をします。
現在、仮の移行を部分的に始めたのですが、どうも使い勝手がやはりDOS版とは異なります。
そこで、いっそ研修というか講習というか、その手の類を受講しようかなと、検索などをしてはいるのですが、どうもヒットしません。
地理的な面で現実的と思えるのはわずか2件です。

「講習会に参加」というスタイルにこだわりはありません。
とにかくWIN版「桐」のスキルを少しでも高めるには、(「触るのが一番」という、べき論以外で)なにかご存じでせうか。

Aベストアンサー

参考URLも結構参考になりますよ。

参考URL:http://www.fuku3.com/~habata/kbbs/kakov9.htm

QVB、chr関数を一覧で印刷できる?

Chr(10)が改行だとかは、どこでどうやって探すの?
一覧表みたいに印刷できる?

Aベストアンサー

MSDNで ASCII文字セット を調べればわかりますよ。
ちなみに、8、9、10、13 は制御文字で、それぞれBackSpace、TAB、LF、CR ですね。

Qアクセスの日付/時刻型で標準型を選択した場合のXX/XX/XX 00:00:00の時刻部分が表示されない

アクセスデータベースについてお教え下さい。

アクセスデータベースのフィールドを日付/時刻型のGeneral Date(標準)に設定した場合、たとえば、2002/02/25 00:00:00と入力すると、00:00:00の部分が省略されてしまいますが(00:00:00でないと表示されるのですが)、00:00:00を表示させるには、どのようにしたらよろしいでしょうか

環境は:Windows2000上でAccess2000を使用しています。

Aベストアンサー

プロパティを標準→yyyy/mm/dd hh:nn:ss
と入力してください。
何かあれば補足して下さい。

QChr関数のラインフィールド文字って?

EXCEL2000のVBAを勉強しているものです。
Chr関数のラインフィールド文字ってどんなことが
できるのでしょうか?調べると「復帰」とかかれているのですが・・
実際に使ってみても何がどう変わっているのかがわかりません。
chr(10)
とすると、どうなるのでしょうか?教えてください。
よろしくお願いいたします。

Aベストアンサー

こんにちは。maruru01です。

文字コード10のラインフィードは、Excelではセル内改行になります。
セルの書式設定の[配置]で、[折り返して全体を表示する]にチェックをしておいて、
そのセルに、

Range("A1").Value = "1行目" & Chr(10) & "2行目"

と書き込むと、セル内改行されます。
ちなみにVBの定数を使用して、

Range("A1").Value = "1行目" & vbLf & "2行目"

とも出来ます。

なお、通常のWindows改行は、Chr(13) & Chr(10)で、VBの定数は、「vbCrLf」ですが、これを使用して、

Range("A1").Value = "1行目" & vbCrLf & "2行目"

とすると、セルの表示は、

1行目・
2行目

という風に、Chr(13)が表示出来ずに、中黒になってしまいます。

Q桐V9での値の取得

桐V9-2007で質問です
左クリックイベントを使用してクリックした行のデータを取得したいと考えています
このイベントだと&明細番号があるのでそれを利用すれば良いように思うのですがうまくいきません

初心者ゆえ悪戦苦闘です

よろしくお願いいたします

Aベストアンサー

こんにちは。

一覧表フォームで左クリックでのその行のある項目値をある変数に取りたいということでいいでしょうか。

フォーム編集と表編集切り替えて確認してみてください。左クリックでレコード位置はその行に移動しています。ということは、[氏名]を &STRに取りたいのなら、[氏名]をソースにしているオブジェクトが t氏名だとして、t氏名のオブジェクト属性のイベントタブ マウス左クリックにチェックいれて、KEVに

手続き定義開始 t氏名::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
 代入 &STR=[氏名]
手続き定義終了

これだけでいいのです。(マウス・クリックは全角表記にしています。)

ただ、これでは t氏名以外のオブジェクトをクリックしても反応してくれません。それには、一覧表オブジェクトのその行の全オブジェクトに同様に設定すればよいのですが、「ファミリ」を使えば、もうちょっとスマートに処理できます。

書式→ファミリパレット 新規作成を2回クリックすれば「ファミリ_1」ができます。

書式→オブジェクトリスト→ファミリ→ファミリ_1 右クリックして両方を選びます。イベントのタブでマウス左クリックにチェック。点3つ並んだビルダボタンをクリック。KEV名はフォーム名と同じにします。KEVの記述は次。

手続き定義開始 ファミリ_1::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
 代入 &STR=[氏名]
手続き定義終了

あとは各オブジェクトへの設定。1レコードあたり1行とします。フォーム定義で行の一番左のオブジェクトクリック、Shift押しながら一番右のオブジェクトクリック。これでその行の全オブジェクト選択できているはずなので、書式→オブジェクトの属性→イベントのタブ。右下のファミリ名のところでファミリ_1選択。

これで、その行のどの項目を左クリックしても、&STRに[氏名]を代入するイベントが発生することになります。試してみてください。

(書式→定義画面の設定で「詳細プロパティを使用する」にチェックをお忘れなく。操作ナビも消去したほうがいいでしょう。)

こんにちは。

一覧表フォームで左クリックでのその行のある項目値をある変数に取りたいということでいいでしょうか。

フォーム編集と表編集切り替えて確認してみてください。左クリックでレコード位置はその行に移動しています。ということは、[氏名]を &STRに取りたいのなら、[氏名]をソースにしているオブジェクトが t氏名だとして、t氏名のオブジェクト属性のイベントタブ マウス左クリックにチェックいれて、KEVに

手続き定義開始 t氏名::マウス左クリック(長整数 &マウス位置[2],長整数 &明細...続きを読む

QChr関数であいうえお順に

Chr関数であいうえお順に文字をエクセルに書き出そうとしたけど、
単純にはいかないのですかね?

Sub test()
Dim MyRow As Long
Dim i As Long

For MyRow = 1 To 51
Cells(MyRow, 1) = Chr(-32096 + i)
i = i + 2
Next MyRow

End Sub
これを実行すると、濁点が入ったりするのですが、
綺麗に「あ~ん」まで取得する方法はありますか?

複雑なコードを作るしかないのですかね?

Aベストアンサー

Chr(-32096 + i)



Mid("あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん", i, 1)

あたりに変えればできませんかね?
文字列部分は別途変数に入れて分離しても可です。

Q管理工学研究所のデーターベース「桐」について。

「桐」バージョン9を使用していますが、以下のことについて
教えて下さい。

例 項目欄   勘定科目    適用    金額          
        法定福利費   厚生年金  10,000

        法定福利費   厚生年金  20,000  
上記の2行で、「文字列・通貨・半角or全角」と項目属性は一緒なのですが、適用で綴って置き換え集計した場合
同一と判断しないで、そのまま2行で表示されてしまいます。そのつど、適用をコピー又は項目置換で同一に修正していますが、一つの表の中でその作業がたくさんあるので
困っています。何か良い方法はないでしょうか。

ちなみに、データの経緯なのですが、桐で入力したデータをCSVファイルに変換しそれを会社の経理システムに取り込んでます。会社のシステムからデータを取り出す時は逆のパターン
で机上のPCに取り込んで作業をしています。

Aベストアンサー

 実際に桐ver9(SP1)に全く同じ表を作り同じデータを取り込んでやってみました。まず集計において行集計を行った場合、小計に[適用]を指定したところきちんと合計が表示されますし、転置集計も1行で表示されます。

 考えられるのはデータに半角と全角のスペースが加えられており、同じデータとは認識されないのではないでしょうか。メインメニューの【表示(V)】→【空白文字(P)】で空白文字列の付加の状況をご確認されてみてはいかがでしょうか。この操作はShift+alt+homeキーでも実現できます。

 もし半角のスペース(表現上は"_")と全角スペース(表現上は"□")が"厚生年金"などのデータの後ろに混在して付加されていれば[適用]項目に関して"#TRIM([],3)"といった計算式を用いて項目置換を行い、よけいな空白を削除されるとよいでしょう。"["と"]"がひっついて□のように表示されるかもしれませんがカレント(着目)の項目を省略した形です。この場合は"#TRIM([適用],3)"でもかまいません。


ちなみに#TRIM( str , f )は
str から全角と半角の空白を取り除いた文字列を返します。
f = 1 : 先頭の空白だけを削除
f = 2 : 末尾の空白だけを削除
f = 3 : 先頭と末尾の空白を削除
f = 4 : すべての空白を削除

という使い方をします。

 実際に桐ver9(SP1)に全く同じ表を作り同じデータを取り込んでやってみました。まず集計において行集計を行った場合、小計に[適用]を指定したところきちんと合計が表示されますし、転置集計も1行で表示されます。

 考えられるのはデータに半角と全角のスペースが加えられており、同じデータとは認識されないのではないでしょうか。メインメニューの【表示(V)】→【空白文字(P)】で空白文字列の付加の状況をご確認されてみてはいかがでしょうか。この操作はShift+alt+homeキーでも実現できます。

 もし...続きを読む


人気Q&Aランキング

おすすめ情報