超初心者な質問ですみません。
たとえばFOR文を使ってtext1~10まで連続に処理させるには
どういったコードを記述すればよいのでしょうか?
初心者用の本やHPを探しても見当たりませんでした。
お願いします。

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

A 回答 (5件)

textエリアをインデックス配列にすればいいです。


Text1のエリアをファーム上でコピーし、貼り付けると
Text1(0)~ Text1(9) の配列になります。
それを
 
(例)

i =0
for i=0 to 9
text1(i) = x
next

のようにすればいいです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。早速試したらできました。
これでスムーズに処理できます!

お礼日時:2001/11/27 14:06

下記の例は、ACCESS VBA で作業した時のものです。

もしかしたらVBでは動かないかもしれないですが、参考になれば幸いです。

For i = 1 To 10
Me("text" & i) = i
Next i

ただ、この例はACCESSにはコントロール配列がない為の苦肉の策です。せっかくVBをお使いなのであれば、No.1さんの回答にもありますように、コントロール自体を配列にしてしまう方が便利かつスマートだと思います。
ヘルプで「コントロール配列」で検索をかければ意味,作成方法が詳しくわかるのではないかと思います。
    • good
    • 0
この回答へのお礼

工夫次第で色々やり方ができるんですね。
ご回答ありがとうございます。一度試してみます。

お礼日時:2001/11/27 14:16

おそらくtext1、text2…というのは、


テキストボックスコントロールの事を指しているのかと思われますが、

関連させたい全テキストボックスのプロパティで、
[オブジェクト名]を同じものにし、(例えばtext)
[Index]に連番を振ると、(0から)
「コントロール配列」として定義できます。

するとtext1、text2、text3…は、
text(0)、text(1)、text(2)として扱う事ができますので、

For i = 0 To 2
 text(i) = "てすと"
Next

なんて事ができます。
    • good
    • 0
この回答へのお礼

なるほど!こういったやり方もあるんですね。
早速試したらできました。
ご回答ありがとうございました。

お礼日時:2001/11/27 14:14

「コントロール配列」というモノを使います。

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

コントロール配列を覚えることができました。ありがとうございました。

お礼日時:2001/11/27 14:12

お疲れ様です。


下でpatakさんがおっしゃったコントロール配列のやり方が一番いいと思います。

参考までに、コントロール配列を使用しないやり方をかきます。

テキストボックスを「TEXT1」から「TEXT10」までの名前でフォームに貼り付けて以下のコードを書込み実行してみてください。

Private Sub Form_Load()

  Dim i As Long

  For i = 1 To 10

   '// TEXTnのテキストプロパティ
   Me.Controls("TEXT" & CStr(i)).Text = CStr(i)

  Next i

End Sub

間違っていたらごめんなさい。
    • good
    • 0
この回答へのお礼

なんとなく理解はできましたが、まだ私には少し難しいみたいです。
もっと勉強します。ありがとうございました。

お礼日時:2001/11/27 14:08

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

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

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

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

QEXCEL VBA ワークシートのコピーについて

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピー先BOOKに

         ワークシート名
ワークシート1 処理1ワークシート 
ワークシート2 処理2ワークシート
ワークシート3 処理3コピー元ワークシート3

という具合にワークシートを複数コピーしたいのですが

処理ごとにデータを代入し、コピー処理はできるのですが。

コピー先BOOK

ワークシート3 処理3ワークシート

だけしかコピーされてないBOOKが作成されます。
上書きされているのだと思われます。

対処法が調べましたが見つけられていません。

すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピ...続きを読む

Aベストアンサー

今どういうコードを書いているのか不明なので、とりあえず
「1つのシートを別のブックに複数回コピーする」ための参考ソースを書きます。
コピー元のブックに下記ソースを貼り付けて実行してもらえば
新規ブックにコピー元のシートが3枚コピーされると思います。
(新規ブックを追加しているのでシート数は3枚より多くなります)

Sub copySheet()
Dim masterWb As Workbook
Dim masterSh As Worksheet
Dim copyWb As Workbook

Set masterWb = ThisWorkbook
Set masterSh = masterWb.Sheets(1)
Set copyWb = Workbooks.Add

'ここからが実際のコピー処理です。
'単純に3回コピーメソッドを呼び出して3回コピーしています。
masterSh.Copy before:=copyWb.Sheets(1)
masterSh.Copy before:=copyWb.Sheets(1)
masterSh.Copy before:=copyWb.Sheets(1)

End Sub

今どういうコードを書いているのか不明なので、とりあえず
「1つのシートを別のブックに複数回コピーする」ための参考ソースを書きます。
コピー元のブックに下記ソースを貼り付けて実行してもらえば
新規ブックにコピー元のシートが3枚コピーされると思います。
(新規ブックを追加しているのでシート数は3枚より多くなります)

Sub copySheet()
Dim masterWb As Workbook
Dim masterSh As Worksheet
Dim copyWb As Workbook

Set masterWb = ThisWorkbook
Set masterSh = masterWb.Sheets(1)
Set copyWb = W...続きを読む

QVBAのコードを教えてください 超初心者です

超初心者なので、以下のようなExcelデータを次のように別シートに加工したく、そのマクロを作っているのですがどうもコードが作れません。コードを教えていただけないでしょうか。

仕様としては同じ組織コード単位で商品番号をカンマ区切りで括りたいのですが、
なにとぞよろしくお願いします。
(カンマ区切りでなくても 別の列になっても構いません。あとで結合すればよいので)

<EXCELデータ>
組織コード  商品番号
(A列)   (B列)
A001     S0001
A001 S0002
B002 S0005
B002 S0003
B002 S0007
C001 S0008
C001 S0006

↓下のように加工

組織コード  商品番号
(A列)   (B列)
A001     S0001,S0002
B002 S0005,S0003,S0007
C001 S0008,S0006

超初心者なので、以下のようなExcelデータを次のように別シートに加工したく、そのマクロを作っているのですがどうもコードが作れません。コードを教えていただけないでしょうか。

仕様としては同じ組織コード単位で商品番号をカンマ区切りで括りたいのですが、
なにとぞよろしくお願いします。
(カンマ区切りでなくても 別の列になっても構いません。あとで結合すればよいので)

<EXCELデータ>
組織コード  商品番号
(A列)   (B列)
A001     S0001
A001 S0002
B002 ...続きを読む

Aベストアンサー

こんにちは。
画面では、ちょっとはっきりしなかったけれども、S0002以降もB列にあるものとします。以下は、こういう時に使う代表的にDictionary オブジェクトを紹介します。出力は、Sheet2 に出すようになっていますが、それは適宜変えてください。

'//
Sub GetUniqueCode()
 Dim objDic As Object
 Dim i As Long, cnt As Long, c
 Set objDic = CreateObject("Scripting.Dictionary")
 With Worksheets("Sheet1")
  For Each c In .Range("A1", .Cells(Rows.Count, 1).End(xlUp))
   If Not objDic.Exists(c.Value) Then
    objDic.Add c.Value, c.Offset(, 1).Value
    Else
    objDic.Item(c.Value) = objDic.Item(c.Value) & "," & c.Offset(, 1).Value
   End If
  Next c
 End With
 cnt = objDic.Count
 If cnt = 0 Then Exit Sub
 With Worksheets("Sheet2") 'シート2へ
  For i = 1 To cnt
   .Cells(i, 1).Value = objDic.Keys()(i - 1)
   .Cells(i, 2).Value = objDic.Items()(i - 1)
  Next i
 End With
MsgBox "Finish!"
End Sub

こんにちは。
画面では、ちょっとはっきりしなかったけれども、S0002以降もB列にあるものとします。以下は、こういう時に使う代表的にDictionary オブジェクトを紹介します。出力は、Sheet2 に出すようになっていますが、それは適宜変えてください。

'//
Sub GetUniqueCode()
 Dim objDic As Object
 Dim i As Long, cnt As Long, c
 Set objDic = CreateObject("Scripting.Dictionary")
 With Worksheets("Sheet1")
  For Each c In .Range("A1", .Cells(Rows.Count, 1).End(xlUp))
   If Not objDic.E...続きを読む

QEXCEL VBA ワークシートのコピーについて

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピー先BOOKに

         ワークシート名
ワークシート1 処理1ワークシート 
ワークシート2 処理2ワークシート
ワークシート3 処理3ワークシート

という具合にワークシートを複数コピーしたいのですが

処理ごとにデータを代入し、コピー処理はできるのですが。

コピー先BOOK

ワークシート3 処理3ワークシート

だけしかコピーされてないBOOKが作成されます。
上書きされているのだと思われます。

対処法が調べましたが見つけられていません。

すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピ...続きを読む

Aベストアンサー

> 配列にワークシートのオブジェクトを入れることとか可能なのでしょうか?

それは多分できないと思います。


> 複数のセル・シートを何回もコピーする場合にでるらしいです。

多分、メモリをたくさん使っちゃってるせいでしょうね。
まず、メモリ使用を減らすようにしましょうか。

・testwriteの最後にオブジェクト変数のメモリ解放を行う。
 具体的には以下のように書く。もうやってたらすみません。
Set cbook = Nothing
Set mastersheet = Nothing
・testwriteの中でのブックオープンおよび保存をやめる。
 新規ブックのオープンをtestwriteを呼ぶ前に1度だけ行い、
 testwriteの中ではその新規ブックに対してシートを追加していく。
 そしてtestwriteの処理が全部終わったら、
 新規ブックの全シートを1度に「記録シートYYYY/MM/DD.xls」にコピーする。

それでも駄目でしたら、以下の回答No.1を試してみてください。
http://oshiete.goo.ne.jp/qa/1822561.html

> 配列にワークシートのオブジェクトを入れることとか可能なのでしょうか?

それは多分できないと思います。


> 複数のセル・シートを何回もコピーする場合にでるらしいです。

多分、メモリをたくさん使っちゃってるせいでしょうね。
まず、メモリ使用を減らすようにしましょうか。

・testwriteの最後にオブジェクト変数のメモリ解放を行う。
 具体的には以下のように書く。もうやってたらすみません。
Set cbook = Nothing
Set mastersheet = Nothing
・testwriteの中でのブックオープンおよび保存をやめ...続きを読む

Q[VBA] LOGファイル (text )からFor Input 構文の作成方法を教えてください

このネットで出ていた構文をアレンジして作ってみました。
http://www.start-macro.com/55/Lesson/l197.html
アレンジした部分が動きません。教えてください。
インプットボックスから、数字を選んで検索した行を張り付けたいだけなのですが
うまくいきません。その時にLOGのファイルをOpenしてを選択させたいのです。
わかる方教えてください。どうぞよろしくお願いします。
---------------------------------------------------------
Sub macro1()
Dim a(256) As String

s = InputBox("Input Number(s)")
If Trim(s) = "" Then Exit Sub

’(この下のCurDirからElseまでを足しました, csvをlogに変更) 
CurDir ("C:\")
strFileName = Application.GetOpenFilename("Log File (*.log),*.log", 1, "Select LOG File")
If (strFileName <> "False") Then
If (Trim(Dir(strFileName)) = "") Then
Call MsgBox("Missing Log file", vbOKOnly, "OK")
Else

'Open "C:\Users\Santa\Desktop\KEN_ALL.CSV" For Input As #5
  ’ (上の文を下に変更)
strFileName For Input As #5 (ここがアレンジした部分)
j = 1
Do While Not EOF(5)
Line Input #5, buf
If buf Like "*" & s & "*" Then
Call wReadCsv(buf, a, n)
For i = 1 To n
Cells(j, i).Select
ActiveCell.FormulaR1C1 = a(i)
Next i
j = j + 1
End If
Loop
Close #5
MsgBox j - 1 & "件のデータを取り込みました。"
Range("A1").Select
End Sub
--------------------------------------------------------------------------

このネットで出ていた構文をアレンジして作ってみました。
http://www.start-macro.com/55/Lesson/l197.html
アレンジした部分が動きません。教えてください。
インプットボックスから、数字を選んで検索した行を張り付けたいだけなのですが
うまくいきません。その時にLOGのファイルをOpenしてを選択させたいのです。
わかる方教えてください。どうぞよろしくお願いします。
---------------------------------------------------------
Sub macro1()
Dim a(256) As String

s = InputBox("Inp...続きを読む

Aベストアンサー

ざっと見ただけですけれども

> Call MsgBox("Missing Log file", vbOKOnly, "OK")
Call不要

> strFileName For Input As #5 (ここがアレンジした部分)
Openがない

> If (strFileName <> "False") Then
> If (Trim(Dir(strFileName)) = "") Then
対応するEnd Ifがない

QEXCELのVBAでシートコピーをしたとき元のマクロを削除するには?

VBAのマクロでシートのコピーをしたいのですが、元のシートにはVBAのコードが含まれています。コピーするのはデータだけのコピーが必要で、マクロ自体は必要ないのですが、それを削除するコードはどのように書いたらいいのでしょうか?
どうしてもコピーしたファイルを開くと「マクロが含まれています」という確認メッセージが出てしまうのですが、それもなくしたいのです。
シートにフォームのボタンが配置されている場合も同様に、そのボタン自体をなくした状態でコピーを行いたいのですが・・・。プログラムで行うのは不可能なのでしょうか?

Aベストアンサー

No2です。
サンプルコードを書いてみました。
「オリジナル」という名前のシートを別ブックとしてコピペ保存します。

Sub サンプル()
Dim sc As Integer
sc = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 1
ThisWorkbook.Sheets("オリジナル").Cells.Copy 'コピー
Workbooks.Add 'ブック追加
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlValues '値貼り付け
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlFormats '書式貼り付け
Sheets("Sheet1").Name = "コピー"
Application.CutCopyMode = False
Application.SheetsInNewWorkbook = sc
ActiveWorkbook.Close
ThisWorkbook.Activate
End Sub

No2です。
サンプルコードを書いてみました。
「オリジナル」という名前のシートを別ブックとしてコピペ保存します。

Sub サンプル()
Dim sc As Integer
sc = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 1
ThisWorkbook.Sheets("オリジナル").Cells.Copy 'コピー
Workbooks.Add 'ブック追加
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlValues '値貼り付け
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlFormats '書式貼り付け...続きを読む

QVBでプリンター制御コードを記述する方法

VisualBasicでアプリケーションを作っているのですが、
印刷するタイミングで、プリンターに直接改行命令を送
りたいのですが、記述方法がわかりません。

プリンター:NEC MultiImpact700JX
使用目的 :専用伝票に印字する打ち出し位置を調整す
      るため

納期が迫っていて大変困っております。
どうか教えて下さい。

Aベストアンサー

For i = 1 To 10
Printer.Print vbCrLf
Next i
で10行下へ改行します。
右へはスペースを印字します。
Printer.Print " ";
また下記で用紙の左上よりのX座標、Y座標指定した位置にAAAを印字します。
Printer.CurrentX = 2600
Printer.CurrentY = 5000
Printer.ForeColor = 3
Printer.Font.Size = 20
Printer.Print "AAA"
これらのどちらかを使って印字位置を調節することは出来ませんか。
何かのご参考になりませんでしょうか。

QVBAのワークシートの追加とコピーなんですが。

VBAのワークシートの追加とコピーなんですが。


sheet1の原紙をすべてコピーして、

新しくワークシートを追加してそのシートに貼り付けるプログラムを

教えてください。

Aベストアンサー

With ActiveWorkbook
  aaa = .Sheets("Sheet1").Cells(9, 4).Value 'aaaは社員
  bbb = .Sheets("Sheet1").Cells(9, 5).Value 'bbbは4月
  .Sheets("Sheet1").Copy After:=.Sheets(.Sheets.Count)
End With
ActiveSheet.Name = aaa & bbb

QVB.NETで起動したEXCELのシートに作成したCommandButtonのコードの記述について

 VB.NETからEXCELを起動し、シートにCommandButtonを作成しました。
 このCommandButtonのコードをどこに記述すればいい
のかわかりません。
 初歩的な質問で申し訳ありませんが、どなた様か、よろしくご教授下さい。

Aベストアンサー

Withブロックの後に
「CommandButton1 = CType(ExlSheet.CommandButton1,MSForms.CommandButton)」
を挿入してもだめでしょうか?

QEXCEL2002で、ブック内のワークシートを他のブックに(VBA含む丸ごと)コピーして移す方法

 EXCEL2002で、ブック内のワークシートを他のブックに(VBA含む丸ごと)コピーして移す方法
 普通のやり方では、セルの数字、値だけで、通常は、中身の重要な"関数式"であったり、VBA等のプログラムまで、コピーされることは、ありませんので、そこまで、出来る方法を教えて下さい。

Aベストアンサー

コピー元のBookとコピー先Bookをどちらも開いて
Excel画面上に並べます(左右に並べる方が作業しやすいと思います)

Ctrlキーを押しながら、コピーしたいシートのタブ部分を
クリック長押しすると、+マークと▲マークが出てきます。
マークが出てきたら、新しいBookにドラッグ&ドロップ で
シートコピーが出来ます。

全く同じシートがコピーされ、マクロもコピーされます。

Qマクロ初心者です。今更なこと聞いて申し訳ないんですが… 周りの先輩方は、マクロ記述する際に、標準

マクロ初心者です。今更なこと聞いて申し訳ないんですが…


周りの先輩方は、マクロ記述する際に、標準モジュール追加してModule1に記述していくのですが、何故開いてるブックのシート名の所に記述しないのでしょうか?
そのシートにある表に、別ブックのデータを取り込みたい時など、そのシート名に記述してはいけないのですか?

Aベストアンサー

シートモジュールやブックモジュールはPublic変数を使ってモジュール間共通変数にならないし、パット見、シートモジュールやブックモジュールの有無もわからない。
またブックやシートをコピーするとブックモジュールやシートモジュールの一緒にくっ付いて行く。

シートやセルに入力したら自動で何かをさせるにはシートモジュールにする必要がありますが、そうで無ければ裏で色々やられてしまうのを嫌うんです。

大雑把な違いは以下(ブックモジュ-ルは割愛)

○属している場所の違い
・標準モジュール:ブックに属しています
・シートモジュール:シートに属しています
つまり、シートをコピーすれば、シートモジュールも一緒にコピーされます。

○シート省略時のRangeオブジェクト
・標準モジュール:アクティブブックのアクティブシート
・シートモジュール:シートモジュールが記載されているシート
もちろん、ブック・シートを指定していれば、これらは同じ動作になります。

○変数
・標準ジュール:全て使用可能
・シートモジュール:Public変数は無効となりPrivate扱いとなる
Dim ・・・そのモジュールのみ
Private ・・・そのモジュールのみ
Public ・・・全てのモジュール

シートモジュールやブックモジュールはPublic変数を使ってモジュール間共通変数にならないし、パット見、シートモジュールやブックモジュールの有無もわからない。
またブックやシートをコピーするとブックモジュールやシートモジュールの一緒にくっ付いて行く。

シートやセルに入力したら自動で何かをさせるにはシートモジュールにする必要がありますが、そうで無ければ裏で色々やられてしまうのを嫌うんです。

大雑把な違いは以下(ブックモジュ-ルは割愛)

○属している場所の違い
・標準モジュール:ブック...続きを読む


人気Q&Aランキング

おすすめ情報