• ベストアンサー

エクセルVBAで、テキストボックスに値を入れる(3)

nishi6の回答

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

シート7のボタンの機能は、このボタンだけで  1.パターンの入力    0ならパターン無視(全パターンが印刷対象)    1~5ならそのパターンを印刷  2.開始行の入力    0なら全行    1以上ならそれが開始行  3.開始行が1以上なら最終行の入力    0なら最終行を自動設定    1以上ならそれが最終行 の手順とすることで、全パターンまたは指定パターンについて、全頁または指定頁間が印刷可能なように考えました。 したがって、 >パターン毎に印刷する場合   <<パターンの入力=1、2、3、4または5、開始行の入力=0>>     指定したパターンの全行が対象です。当然、指定パターンの開始、最終行     の入力もできます。 >データの行を範囲指定して印刷する場合   M行目からN行目の場合、   <<パターンの入力=0、開始行=M、最終行=N>>     パターンは全パターンになっているので、M行からN行が対象になります。     蛇足ですが、パターンの入力=0、開始行=0で全データの印刷になります。 説明不足でしたか。

rurucom
質問者

補足

あいやーすみません!実は、このプログラムを別の似たような処理に使おうと思って質問したので、パターンの選択はいらなっかたのです。すみません!でも、最初のインプットボックスのコードを消してとりあえず解決しました。大丈夫ですよね?ちゃんと動いてますし! ところで、本体の方の完成度はかなり高くなってきました。感謝感激です!といってもまだ、テストデータのテスト用の本体ですが・・・ほんとにありがとうございます。そこで疑問があるのですが、Hanteiの理屈を教えていただきたいのですが・・・というのが、実際のデータでは、テストデータより列数が多くて、しかもデータのあるセルとないセルがいろいろあるのですが、A列、B列、C列、を判定させただけでうまくいくのかが、心配です。差し支えなければ、理屈を教えてください。現在、実際のデータにあわせて作っている最中ですが、まだまだかかりそうなのでよろしくお願いします。 そろそろ、最後の質問になってくると思いますが・・・あといくつかお願いします。やればやるほど欲が出てきてしまってすみません! いろいろ付け加えているのですが、下記の内容の処理がわかりません! 1)検索ボタン~Sheet7に配置~ ボタンを押すことで、インプットボックスが開きそこに入力された文字や数字を列Bから検索させて、該当データを印刷フォームを表示する。 2)終了ボタン~Sheet7に配置~ 終了ボタンを押すことで、データシートを「上書き保存」してデータシートとフォームのシートを閉じる。 もし、「×」で閉じようとしたら、エラーメッセージ、終了ボタンをクリックしてから終了させてください!と表示させる。 3)前回の続きから始める~Sheet7に配置~ ゲームで言うコンティニューみたいなもので・・・前回最後に印刷させた行を表示させるボタン。 ※Sheet7は、メインメニューとして使っています。 その他、こんなものを付け加えました。nishi6先生からおこられるかなぁ?一応動いてくれてます。ご指摘がありましたらよろしくお願いします。 (1)******* Private Sub CommandButton3_Click() '先頭行の表示ボタン Range("B5") = 1 Tensou Range("B5") - (Range("B5") = 0), 0 End Sub (2)******* Private Sub CommandButton4_Click() '1行前を表示 Range("B5") = Range("B6") 'B6のセルに"=B5-2"を入れました。 Tensou Range("B5") - (Range("B5") = 0), 0 End Sub (3)******* Private Sub CommandButton2_Click()’任意で行を指定して表示させました。 Dim tiMsg As String 'メッセージ Dim tiNum 'インプット帰り値 Dim StRow As Long '表示する行 tiMsg = "最初に表示させたい行を入力" & vbLf tiNum = InputBox(tiMsg) Range("B5") = tiNum - 1 Tensou Range("B5") - (Range("B5") = 0), 0 End Sub (4)****** Private Sub CommandButton4_Click()  ’データシートを表示させるボタンをSheet7につけました。 Workbooks.Open "データ.xls" Worksheets("Sheet1").Activate  ※ここで本当は、データの左上を表示させたかったのですが出来ませんでした。 End Sub (5)****** Private Sub Workbook_Open()’ThisWorkBookにコーディング  ’本体を開くとデータシートも開くようにしました。 Workbooks.Open ("データ.xls") Worksheets("Sheet7").Activate MsgBox ("ようこそ") End Sub あとは、ヘルプ機能を付けていきたいと思っています。ヘルプと言ってもワードかメモ帳にでも項目毎にちょこっと書いて、それを見に行くようにするだけですけど・・・この辺は、がんばって出来そうです。 長くなりましたが、よろしくお願いします。

関連するQ&A

  • エクセルVBAで、テキストボックスにセルの値を入れる(2)

    エクセルVBAで、テキストボックスにセルの値を入れる(1)の 回答13で >うまくいったとしてもデータの書込みとテキストボックスの更新が同期がとれない時がある という部分で これは、どういった理由で同期がとれなくなるのでしょうか? それとその場合の対処法を教えてください。 前回URL:http://oshiete1.goo.ne.jp/kotaeru.php3?qid=79173

  • テキストボックスに値を入れる(4)

    テキストボックスに値を入れる(3)で回答をいただいた、終了ボタンなんですが、このときは、2つのファイルを上書き保存して終了させたのですが、「OkWeb_Menu.xls」の方だけ、上書きせずに終了させたいのですが、どうしたらよいでしょうか? いろいろ試して見ましたが、うまくいきません。よろしくお願いします。 前回の回答 2)終了ボタン~Sheet7に配置~ ここでは、メニュー(終了できる方)を「OkWeb_Menu.xls」 データシートを「OkWeb_Data.xls」とします。(ご自分のファイル名に変えてください)   1.タイトルバーの左のアイコンのクリック、   2.タイトルバーの右クリック   3.タイトルバーの×ボタン、   4.メニュー→閉じる、   5.ブックの× では閉じれなくする データシートのThisWorkBookのシートモジュールに貼り付けます。 Private Sub Workbook_BeforeClose(Cancel As Boolean) If Workbooks("OkWeb_Menu.xls").saveOk = False Then MsgBox "メニューから終了させてください!", vbOKOnly Cancel = True Else ActiveWorkbook.Save End If End Sub ***省略*** Workbooks("OkWeb_Menu.xls").saveOk = True Workbooks("OkWeb_Data.xls").Close saveChanges:=True ActiveWorkbook.Save Application.Quit End Sub 前回のURL(3):http://oshiete1.goo.ne.jp/kotaeru.php3?q=85392     (1)  http://oshiete1.goo.ne.jp/kotaeru.php3?qid=79173     (2)  http://oshiete1.goo.ne.jp/kotaeru.php3?qid=85389

  • テキストボックスの移動(2)

    前回、質問しましたが、回答いただいたプログラムで、別のシートから複数のシートのテキストボックスの移動を移動させたいのですが・・・ たとえば、Sheet1・Sheet2・Sheet3にテキストボックス1が配置してあって、A位置とB位置に動くようにしてあります。 前回のプログラムでは、各シートに位置を指定するボタンが配置してありましたが、このボタンをSheet5に配置して、Sheet1・Sheet2・Sheet3の各テキストボックス1が一斉に動くようにしたいのですがよろしくお願いします。 前回のURL → http://oshiete1.goo.ne.jp/kotaeru.php3?q=85846

  • エクセルVBAで、テキストボックスにセルの値を入れる

    宜しくお願いします。 エクセルデータの各項目を、すでに書式(表)が印刷された用紙のそれぞれの項目の位置に印刷させたいのですが・・・ 各項目には、500行ぐらいのデータがあり、別のワークシートの表示させたい位置(すでに印刷された用紙にあわせてある)に各項目ごとのテキストボックスを作っておいて、そのテキストボックスに各項目のデータを1行ごとに表示させて、テキストボックスのフォント調整、印刷 ~を繰り返したいのですが、どのようなコードを書けばよいのでしょうか? 進め方としては、データシートからテキストボックスに各項目のデータが表示されたら、シート上でテキストボックスのフォントや位置の微調整が出来るようにしておいて、印刷ボタンをクリックすると印刷され、次へのボタンをクリックすると、次の行のデータがテキストボックスに表示されるようにしたい。 ※印刷する場合は、テキストボックス内の文字のみ印刷(シートには印刷したくない文字書きたいので・・・) また、そのフォームには、パターンが5つあって、データには1行ごとにパターン番号が入力されているとして、それぞれのパターンにあわせたテキストボックスの配置してあるシートへ行くようにもしたい。 データの入れ替わりが多いので、別のワークブックと繋がるような仕組みにしておいて、テキストボックスの配置してあるブック側から、データのあるブックを呼びに行ってデータを取りに行くようにしておきたい。 以上、条件が多くてすみませんが、VBAは初心者で、ほんの部分的にしかまだ分かりません。どなたか詳しい方宜しくお願いします。

  • テキストボックスをグループ化するVBA

    エクセル上に並んだテキストボックスを、ボタンを押すことで、任意のテキストボックスをグループ化させたい。また、別のボタンでグループ化の解除が出来るようなVBAをおしえてください。 テキストボックスは、Sheet1~3まであって、ボタンもそれぞれに配置してあり、 どこのSheetのボタンを押しても、各シート、それぞれに任意の設定したテキストボックスがグループ化できるようにしたい ※各シート、グループ化するテキストボックスはおなじでなない・・・ よろしくお願いします。

  • テキストボックスの値をExcelシートに反映

    ユーザーフォームのテキストボックス2個の値がExcelシート1の値にマッチしたらそのシート1の値が任意の値に変換される。VBA初心者ですご教授のほどよろしくお願いします。

  • テキストボックスの大きさを、基準の大きさに戻す(エクセルVBA)

    図形のテキストボックスの大きさを取得して、その値を各テキストボックスの基準の大きさとして記録しておき、テキストボックスの大きさをマウスでドラッグして大きさを変えた後、ボタン1つでもとの大きさに戻したいのですが、どのようにすればよいでしょうか? 1)図形のテキストボックス、大きさの取得方法は? 2)基準の大きさと記録する方法は? 3)記録された大きさに戻すには?(シート上に配置されたボタンで実行) ※ 複数のシートに複数のテキストボックスがあります。 ※ シート毎にセットします。(シート毎にテキストボックスのサイズが違う為) ※ 現在、各テキストボックスには、基準位置がセットしてあり、ボタンで基準位置へ戻る仕組みが組まれています。(これをそのままにして・・・) ※ エクセル97と2000で使えるようにします。(作成は97) 宜しくお願い致します。

  • EXCEL VBA テキストボックスを見やすくしたい

    いつもお世話になっております。 EXCEL VBA のユーザーフォーム上の テキストボックスについて教えて下さい。 大きめのテキストボックスを作り 改行を許可して、数十文字を表示させることができたのですが、行と行の間が詰まりすぎていて、見づらいのです。 行間を空ける方法を教えて下さい。

  • EXCEL VBAについて、ワークシート上に置いたTextBoxに値を入れる方法について

    すいませんEXCEL VBAについて質問があります。 エクセルのワークシート上にコントロールツールボックスから テキストボックスを2つ、コマンドボタンを1つ設置する。 アクティブになっているテキストボックスに”goo”という値を入れる。 これをVBAで処理するにはどうしたらよろしいのでしょうか。 ユーザーフォームのテキストボックスであれば Private Sub CommandButton1_Click() Dim i As Object Set i = ActiveControl If TypeOf i Is MSForms.TextBox Then i.Text = i.Text & "goo" End If Set i = Nothing End Sub これでできるはずですが、シート上に置くテキストボックスだと うまくいきません。 よろしくお願いいたします。

  • フィルター後の表示セルの値をテキストボックスへ

    おせわになります。 エクセルのVBAで、 フィルターを掛けて表示されている行のセルの値を、 ユーザーフォーム・テキストボックスへ表示させたいと思っています。 ユーザーフォームの「進む」「戻る」ボタンを使って、 表示行の値を1行づつ取得したいのですが、 ・表示されているセルの値取得 ・ボタンを押すごとに表示行のみ一行づつ移動 がわからずにつまづいています。 よろしくお願い致します。