前のログ 次のログ

No.2950 データレポートについて  投稿者:匿名希望 [01/10/17(水)19:43分]

はじめまして。

いま、仕事でデータレポートで往復はがきに印刷をする
という処理を作っているのですが、往復はがきの下5oのところまで
ギリギリに印刷をしたいんですけど、どうしても、下が
4cmぐらい空いてしまいます。下のマージンを0にしているのにです。
それとも、コードに下をギリギリまで印刷と書いてあげないと
いけないんでしょうか?

どなたか、知ってる方がいたら教えてください。

それと、データレポートのデザイン時に、文字の大きさを10と設定しても
印刷する紙によって文字の大きさが変わるんですけど、これは
どうにか回避できる方法はないのでしょうか??

ご存知の方がいらしたら,助けてください。お願いします。

No.2949 RE:Timerコントロールの解放の方法 解決しました  投稿者:ぷー [01/10/17(水)14:15分]

よねKEN 様

NAO★ 様
レス有難うございました。

実際のプログラムはやたらとタイマーイベントの処理が多いのですが
執拗なまでにキャンセルフラグを監視しExitするようにした所、
無事に変な動作から解放されました。

ほんとうに有難うございました。

No.2948 エラー"-2147417848"について  投稿者:匿名 [01/10/17(水)13:44分]

はじめまして

仕事である客先に納入したシステムのプログラムにて、以下のエラーが発生します。
(データベースからSQL文でレコードを取得,表示を行っている。)

--------------------------------------------------------------------------
エラー番号:-2147417848

エラー内容:オートメーションエラーです。 起動されたオブジェクトは、クライアントから切断されました。

エラー発生場所:ダイナセットの作成を行っているコード
  Set OraDynaset = OraDatabase.CreateDynaset(strSql, ORADYN_READONLY)

      OraDynaset ダイナセットオブジェクト変数
      strSql   SQL文格納変数(Select文)

動作環境
 OS: WindowsNT Workstation4.0(SP6a)
 VB: Visual Basic 6.0(SP4)
 Excel: Microsoft Excel 2000
 Oracle: Oracle 8.0.6
--------------------------------------------------------------------------


上記のエラーについて、御存知の方がいらっしゃいましたら、 何でも良いのでぜひ教えて下さい。
「このエラーは、こういう場合名に発生するよ。」とか、 「このエラーついては、○○という本に載っているよ。」
とか何でも良いので教えて下さい。

お願いします。


No.2947 Re:vb+CAD  投稿者:ゆう(U) [01/10/17(水)12:02分]

> vbでCADを扱いたいのですが、もしご存知の方がおられたら

> 教えていただきたいのです。
CADに詳しいわけではありませんが・・・

> 具体的には、vbにCADの画面を取り込んで、簡単な操作ができればいいのですが。
> VB初心者なので、知識が追いつかなくて。。。
CADにもいろいろあると思いますが、そのCADがActiveXコントロール
などで実装されているのであれば、VBでそのコントロールを使う事で
簡単な操作が出来ると思います。

そうでなければ、そのCADのソフトを無理やり自アプリのフォーム
内に表示して・・・など複雑なことをしないといけなくなります。

CADソフトを単体で操作するより操作性は悪くなると思いますが?

CADに詳しいのであれば、VBでそのデータをもとに絵を作成する
簡易なCADソフトを作成してみてはいかが?

No.2946 RE:Timerコントロールの解放の方法  投稿者:よねKEN [01/10/17(水)9:38分]

> タイマーイベントが呼ばれたら直ぐに Enable を False に

> 設定しているのですが、タイマーイベントが終わる前に
> 中断ボタンで Form2 をアンロードして Form1 を表示させても、
> 忘れた頃に Form2 のタイマーイベント内のメッセージボックスが
> 何度か出てきてしまうのです。
>
> 見た目には Form2 はアンロードされていてもタイマー自体は
> まだ生きているという事でしょうか?

フォームのLoad、Unloadと処理の実行とは無関係です。
ですので、フォームをUnloadしても処理が残っていれば その処理はそのまま継続されます。
タイマーはオフにしてもDo While〜Loopは20秒間ぐるぐる回りつづけています。

対処はNAO★さんの書かれている通りですね。

(余談)
フォームがすべてUnloadされて、かつ、処理がすべて終了したら、
プログラムは終了します。ですので、Form2の中断ボタンを押して、
さらにForm1をXボタンで閉じても、しばらくしてMsgBoxがでてから プログラムは終了するでしょう。

No.2945 RE:Timerコントロールの解放の方法  投稿者:NAO★ [01/10/17(水)1:22分]

これはおそらくタイマーイベントの中でDoEventをしているせいだと思います。

DoEventで何らかのイベントが起こって、処理をした後、 DoEventの後のステートメントに処理が戻ってきている…のかな?
なぜUnLoadしたのに処理が残っているかなど詳しい理屈はわかりません(^^;

で、簡単に済ますなら、適当な外部変数を作って、フォームをアンロードしたときに
この変数の値が変化するようにして、 その値をDoEventの後で調べてあげればいいみたいです。

' [ Form2 ]
Option Explicit
Private Cancel_timer As Boolean ' General部に追加

Private Sub Timer1_Timer()

'中略

Do While Timer - st < 5 '20秒間待つ
DoEvents
If Cancel_timer = True Then '追加
Exit Sub '追加
End If '追加
Loop
MsgBox "測定終了"
End Sub

Private Sub Form_Unload(Cancel As Integer)
Cancel_timer = True '追加
End Sub

No.2944 Timerコントロールの解放の方法  投稿者:ぷー [01/10/16(火)23:08分]


Timerコントロールについて質問があります。

Formを2つ作成しているとします。
一つには測定設定項目フォーム。(測定実行ボタン)- Form1
もう一つには測定&測定結果表示フォーム。(中断ボタン)- Form2

そこで、Form1 の実行ボタンを押し、 Form2.Show した後に
Form2 のタイマーコントロールの最初のタイマーイベントで
測定ルーチンを呼び、測定します。
測定後に測定終了を知らせるメッセージボックスを置きます。

タイマーイベントが呼ばれたら直ぐに Enable を False に
設定しているのですが、タイマーイベントが終わる前に
中断ボタンで Form2 をアンロードして Form1 を表示させても、
忘れた頃に Form2 のタイマーイベント内のメッセージボックスが
何度か出てきてしまうのです。

見た目には Form2 はアンロードされていてもタイマー自体は
まだ生きているという事でしょうか?
タイマーイベントの最初でイベントを Disable にしているのですが・・・。

VBの不可解な壁にぶち当たった気分です。

ご回答よろしくお願い致します。

'********************************************
' [ Form1 ]
'********************************************
Option Explicit

Private Sub Form_Load()

Command1.Caption = "測定実行"

End Sub

Private Sub Command1_Click()

Form2.Show
Me.Visible = False

End Sub

'********************************************
' [ Form2 ]
'********************************************
Option Explicit

Private Sub Form_Load()

Command1.Caption = "測定中断"
Timer1.Interval=500
Timer1.Enabled = True

End Sub

Private Sub Timer1_Timer()

Dim st As Long

Timer1.Enabled = False

'↓に測定ルーチンが入ります。

st = Timer
Do While Timer - st < 20  '20秒間待つ
DoEvents
Loop

'↑に測定ルーチンが入ります。

MsgBox "測定終了"

End Sub

Private Sub Command1_Click()

Form1.Show
Timer1.Enabled = False '念の為
Unload Me

End Sub

Private Sub Form_Unload(Cancel As Integer)

Set Form2 = Nothing 'さらに念の為

End Sub


No.2943 Re:コマンドボタンの文字の色  投稿者:NAO★ [01/10/16(火)17:31分]

ShapeコントロールとLabelコントロールを使って

手動でボタンを作ってみました。(^^;
やろうと思えばこんな事も出来るという1例…だったんだけど
コーディングが多い割に実用性ナシ。笑ってやってください。
Form1にLabelを1個とShapeを2個貼り付けてから実行してください
(プロパティは指定しなくてもいいです)

Option Explicit
Private KeyPress As Boolean
Private Const 移動量 = 50
Private Sub Form_Load()
Dim Obj(3) As Object
Dim i As Integer
Set Obj(0) = Label1
Set Obj(1) = Shape1
Set Obj(2) = Shape2
' ボタンを作ってます(^^;
For i = 0 To 2
Obj(i).Width = 1000
Obj(i).Height = 450
Obj(i).Top = (Form1.Width - 1000) / 2
Obj(i).Left = (Form1.Height - 1000) / 2
Next
' 影になるShape2だけ少し大きくする
Obj(2).Width = Obj(2).Width + 移動量
Obj(2).Height = Obj(2).Height + 移動量

Shape1.FillColor = RGB(255, 255, 150)
Shape2.FillColor = RGB(0, 0, 0) '影
Shape1.FillStyle = 0
Shape2.FillStyle = 0
Label1.BackStyle = 0
Label1.ForeColor = RGB(255, 0, 0)
Shape1.ZOrder 0
Label1.ZOrder 0
End Sub

'クリックイベントは普通に処理を記入
Private Sub Label1_Click()
MsgBox "ボタンが押されました"
End Sub

' キーが押された感じにする
Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, _ X As Single, Y As Single)
If KeyPress = True Then Exit Sub
KeyPress = True
Label1.Left = Label1.Left + 移動量
Label1.Top = Label1.Top + 移動量
Shape1.Top = Shape1.Top + 移動量
Shape1.Left = Shape1.Left + 移動量
End Sub

Private Sub Label1_MouseUp(Button As Integer, Shift As Integer, _ X As Single, Y As Single)
If KeyPress = False Then Exit Sub
KeyPress = False

Label1.Left = Label1.Left - 移動量
Label1.Top = Label1.Top - 移動量
Shape1.Top = Shape1.Top - 移動量
Shape1.Left = Shape1.Left - 移動量

End Sub

ちなみにShapeを三つ使えばもっとリアルなボタンが出来ます。

No.2942 Re:コマンドボタンの文字の色  投稿者:よねKEN [01/10/16(火)16:03分]

>・・・と言うことは結局ボタンの文字の色は個別に変更することは

>できないと言うことでしょうか?

Styleプロパティを1-グラフィックにして、
Pictureプロパティに画像を指定する手もあります。

No.2941 vb+CAD  投稿者:匿名 [01/10/16(火)15:34分]

はじめまして。

いつも参考にさせていただいてます。
vbでCADを扱いたいのですが、もしご存知の方がおられたら
教えていただきたいのです。
具体的には、vbにCADの画面を取り込んで、簡単な操作ができればいいのですが。
VB初心者なので、知識が追いつかなくて。。。
宜しくお願い致します。

No.2940 Re:コマンドボタンの文字の色  投稿者:ゆう(U) [01/10/16(火)13:45分]

「チェックボックスコントロール」


「オプションボタンコントロール」
どちらにしても、使用上の注意点があります。

まず共通点は NAO★ さんも書かれていますが、
ボタンをOff状態にしないと、凹んだ状態のままに
なること・・・

オプションボタン
 複数の内の1つを選択するものなので、フォーカスが
 きた時点でClickイベントが発生する
 つまり別のをクリックすると2回Clickイベントが
 発生する

チェックボックス
 Off状態にする為に、vbUnCheckedを設定した場合も
 Clickイベントが発生する


という事で今回の様な使用目的なら、私のお勧めは
「チェックボックスコントロール」
ですね。

フォーカス移動のクリックと本当のクリックの区別を
つけづらいオプションボタンより、vbUnCheckedを
設定したときと判断できるチェックボックスの方が
使い勝手がいいので・・・

サンプル)
Private Sub Check1_Click()
Static blnFlg As Boolean

If blnFlg Then Exit Sub
blnFlg = True
Check1.Value = vbUnchecked

Debug.Print Timer

blnFlg = False
End Sub

No.2939 Re:コマンドボタンの文字の色    投稿者:NAO★ [01/10/16(火)12:39分]

>オプションボタンやチェックボックスだとボタンが押されたままで

>戻ってこないですよね。

クリックイベントの中でValueプロパティをFalseにすれば見た目ボタン風ですよね。
若干反応が鈍い気もしますが…

Private Sub Option1_Click()
Option1.Value = False
End Sub

No.2938 Re:Re:コマンドボタンの文字の色  投稿者:匿名 [01/10/16(火)12:26分]

ゆう(U)さん、レスありがとうございます。

win98等の"電卓"のボタンみたいなのを作りたいのです。
オプションボタンやチェックボックスだとボタンが押されたままで
戻ってこないですよね。
また、画面のプロパティだと"電卓"みたく赤や青といった各々の
ボタンの色を変更することができませんよね。
・・・と言うことは結局ボタンの文字の色は個別に変更することは
できないと言うことでしょうか?
それとも何か他の方法で変更可能なのでしょうか?
言葉少なで申し訳ありませんでした。
よろしくお願いいたします。


No.2937 Re:コマンドボタンの文字の色  投稿者:ゆう(U) [01/10/16(火)10:02分]

ここの「逆引きヘルプ一覧」で・・・


オプション・・・
を調べてみてください。

コマンドボタンのキャプションはシステムに依存しますので、
画面のプロパティで変更可能です。
※当然全てに影響を与えます

No.2936 Re:改行コードを文字に置き換え  投稿者:ゆう(U) [01/10/16(火)9:57分]

>    Wk = Split(Text, before)

> ConvText2 = Join(Wk, After)
面白い発想ですね・・・
※私には思いつきませんでした

ちなみに文字列の置換はVB6.0から追加された新関数の
「Replace 関数」
で可能です。


ちなみに速度を計測してみました。

サンプル)
Private Sub Command1_Click()
Const MY_TEXT = "あいうえお" & vbCrLf & "かきくけこ" & vbCrLf & _ "さしすせそ" & vbCrLf & "たちつてと"
Dim sngTimer As Single
Dim strTemp As String
Dim i As Long

sngTimer = Timer
For i = 0 To 99999
strTemp = Replace(MY_TEXT, vbCrLf, "\")
Next
sngTimer = Timer - sngTimer
Debug.Print strTemp, Format$(sngTimer, "#,0.00")

sngTimer = Timer
For i = 0 To 99999
strTemp = Join(Split(MY_TEXT, vbCrLf), "\")
Next
sngTimer = Timer - sngTimer
Debug.Print strTemp, Format$(sngTimer, "#,0.00")
End Sub


私の環境では・・・

あいうえお\かきくけこ\さしすせそ\たちつてと 0.57
あいうえお\かきくけこ\さしすせそ\たちつてと 0.71

となります。

※まぁ速度重視なら「InStr 関数」「Mid 関数」等で
 速度最適化を考慮したコードを書いたほうが高速ですが

No.2935 コマンドボタンの文字の色  投稿者:匿名 [01/10/15(月)17:55分]

はじめて書き込みします。

過去ログを拝見したのですがレスがついてなくてわかりませんでした。
質問はコマンドボタンの文字の色の変更の仕方です。
コマンドボタンにはforecolorがないですよね?
どうすればコマンドボタンの文字の色がへんこうできますか?
よろしくお願いいたします。

No.2934 RE:改行コードを文字に置き換え  投稿者:匿名 [01/10/15(月)17:12分]

NAO★さん

できました。
どうもありがとうございました。

No.2933 RE:RE:改行コードを文字に置き換え      投稿者:NAO★ [01/10/15(月)16:03分]

あうあう。

以前作った関数を変更して書いたのでよけいな変数とかそのままで、
関数名もConvText2とかなっていてすみません。

No.2932 RE:改行コードを文字に置き換え    投稿者:NAO★ [01/10/15(月)15:57分]

>vbCrLf)を文字("\"など)


どのタイミングで行うかで若干変わりますが、次のような感じでしょうでしょうか?
' 文字列を変換する関数
Function ConvText2(Text As String, before As String, After As String) As String
Dim i As Integer
Dim Pos As Integer
Dim Wk() As String

Wk = Split(Text, before)
ConvText2 = Join(Wk, After)
End Function

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' 呼び出し方
Private Sub Command1_Click()
'ボタンが押されたときなど、あるタイミングで使うなら次の1文でOK
Text1.Text = ConvText2(Text1.Text, vbCrLf, "\")
End Sub

Private Sub Text1_Change()
Dim i As Integer
Text1.Text = ConvText2(Text1.Text, vbCrLf, "\")
' 入力しながら変換するにはこちらをついか
i = Len(Text1.Text)
Text1.SelStart = i ' カーソルを文字列の最後に移動
End Sub

No.2931 エクセル上に書き込むには?  投稿者:匿名 [01/10/15(月)13:43分]

ボタンをクリックしたら、Pictureに計算された文字が表示されるような
プログラムを作ったのですが、

その答えをエクセル上に一覧表として表示したいのです。
ちょー初心者な私に教えて下さい。
ところで、エクセル上に書き込むことってできるんでしょうか??
こんな質問ですみません。

No.2930 Re:ListViewの表示を早くしたい    投稿者:NAO★ [01/10/15(月)12:32分]

件名の件では、お世話になりました。

サブルーチンをインラインに変えてみたり、
withを工夫することでだいぶスピードの改善を図ることが出来ました。

with が入れ子出来るのを知りませんでしたので、ずいぶん参考になりました。
ありがとうございます。

No.2929 改行コードを文字に置き換え  投稿者:匿名 [01/10/15(月)5:33分]

いつも参考にさせていただいています。

VBは全く初心者なので、ちょっと教えてほしいことがあります。

テキストボックス内の改行コード(vbCrLf)を
文字("\"など)に置き換えて表示させるにはどうしたらいいんでしょうか?

教えてください。

No.2928 Re:『ファイルの Get または Open 時にうまく読み込まれない』    投稿者:靴下カタオ [01/10/13(土)23:42分] http://www.KenAshizuka.com/

花ちゃん、どうもありがとうございました。

回答を読ませていただく前に、
次のような方法を実行しました。

ret = Instr(CD.Composer,Chr$(0))
If ret = 0 Then
ret = 40
Else
ret = ret - 1
End If

によって
NULL までの文字数を計算し、
List1 へのセットを

List1.AddItem Left$(CD.Composer,ret)

のように行うことにより、NULL を排除できました。

花ちゃんから教えていただいた方法も
試させていただきます。
どうもありがとうございました。
またよろしくお願いします。

No.2927 Re:ファイルの状態  投稿者:ゆう(U) [01/10/13(土)15:21分]

> 任意のファイルが使用中かどうかチェックする方法を教えて下さい。

> 例えば、Excelのファイルが開かれているかどうか。

アプリケーションがどの様に開いているかが問題になりますが・・・

テキストエディター等の場合、一度テキストを読み込んだファイルは
閉じておき、変更があった場合に開いて書き換えますよね?

Exelの場合であれば、Openの際にLockを掛ければ開かれている
可能性があると判断できます(エラー発生)。
※バージョンやExelの開き方によっては判断できないかもね
 (読み取り専用のxlsはLockでも確認できない)

No.2926 RE:ファイルの状態  投稿者:花ちゃん [01/10/13(土)15:06分]

ここのHPのExcel&Word関係の エクセルが既に起動中かどうか調べるの中の

指定のファイルが使用中かどうかを調べる を見て下さい。

No.2925 RE:ファイル検索  投稿者:花ちゃん [01/10/13(土)15:04分]

ここのHPの自作ソフト&サンプル集の ”「FileSystemObject」を使ったファイルの

検索システム”を参考にして下さい。

No.2924 ファイルの状態  投稿者:seyya [01/10/13(土)14:24分]

任意のファイルが使用中かどうかチェックする方法を教えて下さい。

例えば、Excelのファイルが開かれているかどうか。

No.2923 ファイル検索  投稿者:seyya [01/10/13(土)12:01分]

VBから任意のファイルを検索しその絶対パスを取得する方法を教えて下さい。

No.2922 Re:スプレッドのセルの結合  投稿者:ゆう(U) [01/10/13(土)9:54分]

> 今、スプレッドを使っているのですが、エクセルみたいにセルの結合ってできますか?

> どうしてもわからないので、知っている方教えてください。
スプレッド コントロール?は持っていないので・・・

マージ(Merge)と付くプロパティ・メソッドを調べるとか・・・
セル(Cell)から追って調べてみるとか・・・
製造元に確認するとか、HPを見に行くとか。

No.2921 スプレッドのセルの結合  投稿者:匿名 [01/10/12(金)19:57分]

VB初心者なのでよろしくお願いします。

今、スプレッドを使っているのですが、エクセルみたいにセルの結合ってできますか?
どうしてもわからないので、知っている方教えてください。

No.2920 Re:『ファイルの Get または Open 時にうまく読み込まれない』  投稿者:花ちゃん [01/10/12(金)17:59分]

多分 データに半角と全角文字を混在しておられるのではないかと思います。


その場合ランダムファイルは NullChar が入りデータとデータをつないで 表示した場合 NullChar 以降の
文字が表示されません。
データからNullCharを取除くか個別で表示すれば表示できるはずです

NullChar を取除く(ゆう(U)さん投稿分) 標準モジュールにでも書いて下さい

Public Function fNullCut(ByRef myString As String) As String
Dim i As Long
i = InStr(myString, vbNullChar)
If i > 0& Then
fNullCut = Left$(myString, i - 1&)
Else
fNullCut = myString
End If
End Function


表示の部分を下記のように変更して下さい
Private Sub Command2_Click()
Dim Composer As String
Dim Work As String
Dim Artist1 As String
Dim Artist2 As String

Get #1, Val(Text5.Text), CD
Composer = fNullCut(CD.Composer)
Work = fNullCut(CD.Work)
Artist1 = fNullCut(CD.Artist1)
Artist1 = fNullCut(CD.Artist2)
List1.AddItem Composer & Work & Artist1 & ":" & Artist2
End Sub

No.2919 Re:『ファイルの Get または Open 時にうまく読み込まれない』  投稿者:ゆう(U) [01/10/12(金)9:28分]

本当に表示されないのですか?

私の目には、何度やっても全て表示されて見えます。

> で、Command2 によって読み出すと、
> Text1 〜 Text4 に入力した項目が、全て List1 に表示されます。
という事ですから、List1の幅が足りないとは思えませんし・・・
原因はわかりません。


気になる点といえば・・・
ファイル番号を1と決め付けている点と、終了をEndで
強制的に終了させている点ですけど、今回の問題には
関係ありませんし。

No.2918 『ファイルの Get または Open 時にうまく読み込まれない』  投稿者:靴下カタオ [01/10/12(金)0:37分] http://www.KenAshizuka.com/

いつもお世話になっております。


技術評論社の「Visual Basic 6.0 初級プログラミング入門(上) :河西朝雄著」

の中のサンプルをもとに、
「『作曲者、曲名、演奏者1,演奏者2』をレコードとするデータを、
ランダム・ファイルとしてリード / ライトする 」
プログラムとして、次のようなコードを作成しました。

標準モジュールに、

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

Type ClasicalMusic
Composer As String * 40
Work As String * 40
Artist1 As String * 40
Artist2 As String * 40
End Type

Public CD As ClasicalMusic

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

コードは

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

Private Sub Command1_Click()
CD.Composer = Text1.Text
CD.Work = Text2.Text
CD.Artist1 = Text3.Text
CD.Artist2 = Text4.Text
Put #1, Val(Text5.Text), CD
End Sub
Private Sub Command2_Click()
Get #1, Val(Text5.Text), CD
List1.AddItem CD.Composer & CD.Work & CD.Artist1 & ":" & CD.Artist2
End Sub
Private Sub Command3_Click()
Close #1
End
End Sub
Private Sub Form_Load()
Open "cd.rnd" For Random As #1 Len = Len(CD)
End Sub

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

実行して、2件ほど入力し、入力したキー(Text5.Text で指定する)
で、Command2 によって読み出すと、
Text1 〜 Text4 に入力した項目が、全て List1 に表示されます。
ところが、Command3 によってプログラムを一度終了させて
再び実行し、同じように読み出すと、
Text1 の項目しか表示されません。
作成された cd.rnd というファイルを開いてみると、
Text1 〜 Text4 に入力した項目が全て書き込まれていることがわかりました。
プログラムが終了しないうちはちゃんと作動しますので、
Get ステートメント自体に問題があるようには見えないのですが、
ほかに、思い当たることもありません。
何かおわかりになることがありましたら、お教えいただければ幸いです。
どうか、よろしくお願いいたします。

No.2917 Re:Shell関数を使用したアプリケーション起動  投稿者:さおとめ [01/10/11(木)22:15分]

ゆう(U) さん ありがとうございます。


TRYしてみます!


No.2916 IEを閉じる  投稿者:匿名 [01/10/11(木)19:16分]

IEを指定したURLで開くなんてのは、よく見かけるのですが、

逆に、(VBから)指定したURLを閉じるってのは、どうするのでしょうか?
VB初心者のため、さっぱり分かりません。
ご教授をお願いします。

No.2915 Re:(ListView)行の選択の設定をしても選択されない  投稿者:ゆう(U) [01/10/11(木)16:53分]

> 見た目(青くならない)には、選択されていません。

青くなるかは確認していただければわかりますが・・・

> これも、プロパティの設定なのでしょうか?
質問する前に、まずはコントロールのプロパティに一通り
目を通してはいかがでしょう。
※ヘルプをチェックするのは基本です

「コントロールがフォーカスを失ったときに、選択されている
テキストの強調表示をどうするかを指定します。」

これだけしか説明が書かれていないプロパティですから、
見落としにくいですよ。

No.2914 (ListView)行の選択の設定をしても選択されない  投稿者:匿名 [01/10/11(木)15:29分]


もう1つの質問です。 よろしくお願いします。
【質問】
 画面をShowした時に、行を選択した状態を作りたいのです。
 ListView1.ListItems(Count).Selected = True
 ↑で設定しているのですが・・・。
 ListView.SelectedItem.Index
 を行うと設定した行を選択している様なのですが、
 見た目(青くならない)には、選択されていません。
 これも、プロパティの設定なのでしょうか?

No.2913 Re:Re:ListViewの1カラム目の入力モード解除    投稿者:匿名 [01/10/11(木)15:28分]

ありがとうございました。 うまくいきました(^^)/

2つともプロパティの設定だけでOKだったんですね。
すっごく遠回りした気がします(^^;

No.2912 テンプレのコピーについて  投稿者:みちる [01/10/11(木)13:52分]

>匿名さん


ありがとうございました。とても参考になりました。

私の説明不足のせいで、ちょっと違ったのでした。
枚数分のワークシートを作るのではなくて、一枚のワークシートに
同じテンプレートを繰り返し貼りつけるという作業がしたいのでした。

例えば、10と指定したら、一枚のワークシートに
10個、縦に同じテンプレートがコピーされる。。と言うように
したいのです。

よきアドバイスをお願いします。

No.2911 Re:ListViewの1カラム目の入力モード解除  投稿者:ゆう(U) [01/10/11(木)9:29分]

> 【質問1】

>  1カラム目に値を設定しないで、幅を0にして隠して見ませたが
>  やはり、隠れている1カラム目が入力の要求をしてきます。
下の定数の直下に「ListLabelEdit 定数」って見ませんでしたか?
プロパティの設定だけで編集を手動に出来ます。

> 【質問2】
> その中に、「ListColumnAlignment 定数」というのがあって
> 「lvwColumnRight 1 右詰め。テキストは右詰めで配置されます。 」
> と書いてありましたが良く使い方が分かりません。
そこまで調べられたら後もう少しです・・・

定数の一つを検索してみると、どのプロパティに設定する
値なのか調べられます。

ちなみに列の全て(ヘッダー部分・内容部分)が影響を受けます。

No.2910 ListViewの1カラム目の入力モード解除  投稿者:匿名 [01/10/10(水)23:18分]

いつも参考にさせていただいています。

早速ですがListViewに関して2つほど質問があります。

【質問1】
 ListViewで表示形式を 「IvwReport」にして表示しています。
 行は、「FullRowSelect」を設定しています。
 行を選択(Select)し、しばらくすると
 1カラム目(ListView1.ListItems.Addで作成されるカラム)が
 入力できる様になってしまうのです。
 1カラム目に値を設定しないで、幅を0にして隠して見ませたが
 やはり、隠れている1カラム目が入力の要求をしてきます。

【質問2】
 SubItem(1カラム目以外)のカラムの1つを右詰に設定したいのです
 どのようにしたら良いのでしょうか?
 因みに、「MSDNライブラリ」で「リストビューコントロールの定義」
 と言うのがありました。
 その中に、「ListColumnAlignment 定数」というのがあって
 「lvwColumnRight 1 右詰め。テキストは右詰めで配置されます。 」
 と書いてありましたが良く使い方が分かりません。
 それに、カラムの指定をどのようにするのかも疑問です。
 これは、関係ないのでしょうか??


よろしくお願いします。


No.2909 テンプレのコピー  投稿者:匿名 [01/10/10(水)18:22分]

dim SheetDay as integer


Set Org_Sheet = XlObj.Worksheets("Origin") 'テンプレートを指定。
Set NewWorkbook = XlObjWorkbooks.Add ’コピー先(新しいブック)

一ヶ月分を一つのブック。(一日分1シート)
'
For SheetDay = 32 To 1 Step -1
Org_Sheet.Name = Trim(Str(SheetDay))
Org_Sheet.Copy after:=NewWorkbook.Worksheets(1)
Next

No.2908 re:VBからのエクセル呼び出しについて  投稿者:匿名 [01/10/10(水)18:13分]

エクセルの”シートの移動、コピー”コマンドをマクロに保存して、

そのコードを流用したら?

No.2907 vb6でCSVに書き出したい  投稿者:エレク [01/10/10(水)17:57分]

エレクです。いつもお世話になっています。

VB6でADO経由のテーブルをCSVに書き出したいのですが、簡単な方法はないでしょうか?
DAOテーブルであれば簡単にCSVに書き出すことができますが、やはりADOテーブルは、
フィールド毎に見ていき、間にカンマを入れていく方法しかないのでしょうか?
どなたかご存知の方、教えて下さい!!
よろしくお願いします。

No.2906 VBからのエクセル呼び出しについて。  投稿者:みちる [01/10/10(水)17:39分]

いつも、参考にさせてもらっています。


質問は、VBからエクセルを呼び出すんですけど
その際に、エクセルは既に、テンプレートのように、固定の枠が (表みたいなもの)が出来ていて
それを呼び出して、指定の位置に、文字を入れるようにしたいのです。

その際に、テンプレートを何度も繰り返してコピーして使いたいのです。
一枚のシートに、縦に、一番上のテンプレートをコピーして、指定数だけ
表が出来ていて、そこに値をはめ込んでゆきたい。。という事がしたいんです。
例えば、VB側で"5"と指定されたら、エクセルで既に作成されている表のテンプレートを
一番上のをこぴーして、五つ出来あがるようにしたい。

やり方が解りません。
色々、調べてみましたが、どうも解りません。
よきアドバイスをお願いします。

No.2905 RE:VBからエクセルに日にちを貼り付ける    投稿者:匿名 [01/10/10(水)16:48分]

今日の日付けの書き込みとは、

dim ObjXl as Object

set ObjXl = CreateNew ("Excel.Appricarion)
With ObjXl
.WorkSheet.Add
.WorkSheets("Sheet1").cells(1,1).Value = now()
end with
でいいですか?

No.2904 VBからエクセルに日にちを貼り付ける  投稿者:匿名 [01/10/10(水)15:13分]

VB初心者なので宜しくお願いします。

今、読んできたデータをエクセルに貼り付けているのですが、今日の日付をどうやって
書けばいいのかわかりません。あと、エクセルのページ 1/? を好きなところに
貼り付けるには、どうすればいいのかも教えてください。お願いします。

No.2903 Re:コンボボックス  投稿者:ゆう(U) [01/10/10(水)11:07分]

標準モジュール)

Private Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" _
(ByVal hWnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByRef lParam As Any) As Long
'==========================================================
'ドロップダウンリスト部の幅を変更する fComboDroppedWidth
'==========================================================
' result = fComboDroppedWidth(myCombo, lenPixels)
' 引数 myCombo :コンボボックス
'    lenPixels:幅(ピクセルで設定)
' 戻値  :True 成功
'      False 失敗(変更されない場合も)
'----------------------------------------------------------
Public Function fComboDroppedWidth(ByRef myCombo As ComboBox, _
ByVal lenPixels As Integer _
) As Boolean
Const CB_ERR = (-1&)
Const CB_SETDROPPEDWIDTH = &H160&
Const CB_GETDROPPEDWIDTH = &H15F&
Dim lngResult As Long
Dim lngLength As Long

If myCombo.Style = vbComboSimple Then Exit Function

lngResult = SendMessage(myCombo.hWnd, _
CB_GETDROPPEDWIDTH, _
0&, _
0&)
If lngResult <> CB_ERR Then
lngLength = lngResult
If lngResult <> lenPixels Then
lngResult = SendMessage(myCombo.hWnd, _
CB_SETDROPPEDWIDTH, _
lenPixels, _
0&)
If lngResult <> CB_ERR And lngResult <> lngLength Then
fComboDroppedWidth = True
End If
End If
End If
End Function

No.2902 コンボボックス  投稿者:MARDER [01/10/10(水)9:51分]

ドロップダウンリストを出すコンボボックスで、リスト文字列がコンボボックスの幅より
長くなってしまう場合があります。そうすると文字が途中で切れてしまい
内容が良くわからなくなったりします。

コンボボックスのドロップダウンリストの幅を変えたいのですが どうしたらいいのでしょうか?

No.2901 RE:『実行時エラー '380' プロパティの値が不正です。』      投稿者:靴下カタオ [01/10/10(水)1:27分] http://www.KenAshizuka.com/

あきさん、どうもありがとうございます。

おっしゃるとおり、
全角スペースを半角スペースにしたところ、
参考書のとおりの結果が得られました。

あきさんの回答を読ませていただく前に、
新しいプロジェクトで標準EXEを選んで
作り直したところ、form1 が Form1 に変わリました。

何か、他のプロジェクトと資源が競合していたのが
解消したように見えますが … 私にはわかりません。
どうもありがとうございました。

前のログ 次のログ


VBレスキュー(花ちゃん)
Visual Basic6.0  VB6.0