cj_mover の回答履歴

全798件中501~520件表示
  • アプリケーション自体のサイズを設定したい エクセル

    エクセルでウインドウのサイズは、 Sub Macro1() With ActiveWindow .Top = 0 .Left = 0 .Width = 300 .Height = 300 End With End Sub で自分の好きな大きさにできますが、 アプリケーション自体のサイズを上記のように細かく指定するにはどうすればいいでしょうか? APIを使うのでしょうか? コードをご教授いただけますか?

  • マクロ・複数の条件から一致する合計を求めたい。

    マクロ初心者です。 現在SUMIF関数で一致する条件を集計しているのですが、件数が多く処理が重くなってしまい困っています。 ピポットテーブルの使用も検討したのですが、表を参照して別ブックに反映させる事がある為、使用する事を断念しました。 今回、解決したい内容は・・・ ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー sheets("データ")には A3から「受注した日付」、B3から「発送日」、C3から「取引先」、D3から「商品名」、E3から「=A3&B3&C3&D3」※受注日+発送日+取引先+商品名、F3から「=B3&C3&D3」※発送日+取引先+商品名、G3から「=C3&D3」※取引先+商品名、H3から受注数を一覧(下へ)表示しております。 シートはそれぞれ、sheets("受注日累計")、sheets("発送日累計")、sheets("累計")があり、sheets("受注日累計")にはE3のデータをSUMIFで参照して一致するものの合計値を、sheets("発送日累計")にはF3のデータをSUMIFで参照して一致するものの合計値を、sheets("累計")にはG3のデータをSUMIFで参照して一致するものの合計値を表示しております。 ※それぞれD7セルから。 その為、処理に非常に時間がかかりますので、関数を使用せず集計ボタン一つで、処理が重く成らない様、集計出来るようにしたいのですが・・・ どうか無能な私にご教授の程、宜しくお願いいたします。 エクセルは2003を使用しております。

  • またINDEXについてです

    また失礼します、 INDEXです。 なんか変です。 Excel2003でINDEX(範囲,行番号,列番号,領域番号) の構文を使おうと思ったのですが、 =INDEX(('Sheet1:Sheet3'!C7:D8),0,0,0) は、おろか =INDEX((Sheet1!C7:D8,Sheet2!C7:D8,Sheet3!C7:D8),0,0,ROW(A1:A3)) に、始まらず =INDEX((Sheet1!C7:D8,Sheet2!C7:D8,Sheet3!C7:D8),0,0,1) どころか =INDEX((Sheet1!C7:D8,Sheet2!C7:D8,Sheet3!C7:D8),1,1,1) すらも駄目で 数式バー内でPD9をしても#VALUE!になります。 勿論通常のセル表示上でも#VALUE!です。 HELP上では =INDEX((A1:C6,A8:C11),2,2,2) と、云う記載が挙げられているので =INDEX((Sheet1!C7:D8,Sheet2!C7:D8,Sheet3!C7:D8),1,1,1) 位は行けて欲しいところなのですが… 領域が 多シートにまたがっては駄目なのでしょうか? ね~… 2007かも知れませんが、 昔多シート参照 克服した覚えがあるのですが、… 困りました。 ご教示をお願いします。 因みに =INDIRECT("Sheet1:Sheet3!$C$7",TRUE)は#REF! =OFFSET(Sheet1:Sheet3!C7,1,1,1,1)は#VALUE! になりました (※注:数式バー内でのPF9でも です)

  • またINDEXについてです

    また失礼します、 INDEXです。 なんか変です。 Excel2003でINDEX(範囲,行番号,列番号,領域番号) の構文を使おうと思ったのですが、 =INDEX(('Sheet1:Sheet3'!C7:D8),0,0,0) は、おろか =INDEX((Sheet1!C7:D8,Sheet2!C7:D8,Sheet3!C7:D8),0,0,ROW(A1:A3)) に、始まらず =INDEX((Sheet1!C7:D8,Sheet2!C7:D8,Sheet3!C7:D8),0,0,1) どころか =INDEX((Sheet1!C7:D8,Sheet2!C7:D8,Sheet3!C7:D8),1,1,1) すらも駄目で 数式バー内でPD9をしても#VALUE!になります。 勿論通常のセル表示上でも#VALUE!です。 HELP上では =INDEX((A1:C6,A8:C11),2,2,2) と、云う記載が挙げられているので =INDEX((Sheet1!C7:D8,Sheet2!C7:D8,Sheet3!C7:D8),1,1,1) 位は行けて欲しいところなのですが… 領域が 多シートにまたがっては駄目なのでしょうか? ね~… 2007かも知れませんが、 昔多シート参照 克服した覚えがあるのですが、… 困りました。 ご教示をお願いします。 因みに =INDIRECT("Sheet1:Sheet3!$C$7",TRUE)は#REF! =OFFSET(Sheet1:Sheet3!C7,1,1,1,1)は#VALUE! になりました (※注:数式バー内でのPF9でも です)

  • またINDEXについてです

    また失礼します、 INDEXです。 なんか変です。 Excel2003でINDEX(範囲,行番号,列番号,領域番号) の構文を使おうと思ったのですが、 =INDEX(('Sheet1:Sheet3'!C7:D8),0,0,0) は、おろか =INDEX((Sheet1!C7:D8,Sheet2!C7:D8,Sheet3!C7:D8),0,0,ROW(A1:A3)) に、始まらず =INDEX((Sheet1!C7:D8,Sheet2!C7:D8,Sheet3!C7:D8),0,0,1) どころか =INDEX((Sheet1!C7:D8,Sheet2!C7:D8,Sheet3!C7:D8),1,1,1) すらも駄目で 数式バー内でPD9をしても#VALUE!になります。 勿論通常のセル表示上でも#VALUE!です。 HELP上では =INDEX((A1:C6,A8:C11),2,2,2) と、云う記載が挙げられているので =INDEX((Sheet1!C7:D8,Sheet2!C7:D8,Sheet3!C7:D8),1,1,1) 位は行けて欲しいところなのですが… 領域が 多シートにまたがっては駄目なのでしょうか? ね~… 2007かも知れませんが、 昔多シート参照 克服した覚えがあるのですが、… 困りました。 ご教示をお願いします。 因みに =INDIRECT("Sheet1:Sheet3!$C$7",TRUE)は#REF! =OFFSET(Sheet1:Sheet3!C7,1,1,1,1)は#VALUE! になりました (※注:数式バー内でのPF9でも です)

  • ExcelVBA その回のみループを終わらせる

    お世話になります。 初歩的かも知れませんが、解らないことが見つかりましたので、お助け下さい。 質問内容 For Each等のループの中で、 その回のループ処理が不必要な場合、 Nextから次に進める方法 Dim Flag As Boolean Sub main() Dim 調査範囲 As Range, レンジ As Range, ダスト As Long, シート1 As String   シート1 = …     …     …     …   For Eact レンジ In 調査範囲     Flag = False     …     …     …     ダスト = ダミー()     …     …     With sheets(シート1)     If Flag _       Then         '   ←  此所の書き方です       End If     End With     …     …   Next レンジ     …     …     …     …     … End Sub Function ダミー() As long     …     …   If 何たら = かんたら Then Flag = True     …     …     … End Function これは1例ですが Do Loopや通常のFor Nextなどの場合も併せて どう書けば、スタックオーバーフロー無しに Nextに安全に飛ばせられるか? ご教示をお願い致します。 但しGo To以外でお願いします。 スパゲッティはやです 汗  

  • ExcelVBA その回のみループを終わらせる

    お世話になります。 初歩的かも知れませんが、解らないことが見つかりましたので、お助け下さい。 質問内容 For Each等のループの中で、 その回のループ処理が不必要な場合、 Nextから次に進める方法 Dim Flag As Boolean Sub main() Dim 調査範囲 As Range, レンジ As Range, ダスト As Long, シート1 As String   シート1 = …     …     …     …   For Eact レンジ In 調査範囲     Flag = False     …     …     …     ダスト = ダミー()     …     …     With sheets(シート1)     If Flag _       Then         '   ←  此所の書き方です       End If     End With     …     …   Next レンジ     …     …     …     …     … End Sub Function ダミー() As long     …     …   If 何たら = かんたら Then Flag = True     …     …     … End Function これは1例ですが Do Loopや通常のFor Nextなどの場合も併せて どう書けば、スタックオーバーフロー無しに Nextに安全に飛ばせられるか? ご教示をお願い致します。 但しGo To以外でお願いします。 スパゲッティはやです 汗  

  • ExcelVBA その回のみループを終わらせる

    お世話になります。 初歩的かも知れませんが、解らないことが見つかりましたので、お助け下さい。 質問内容 For Each等のループの中で、 その回のループ処理が不必要な場合、 Nextから次に進める方法 Dim Flag As Boolean Sub main() Dim 調査範囲 As Range, レンジ As Range, ダスト As Long, シート1 As String   シート1 = …     …     …     …   For Eact レンジ In 調査範囲     Flag = False     …     …     …     ダスト = ダミー()     …     …     With sheets(シート1)     If Flag _       Then         '   ←  此所の書き方です       End If     End With     …     …   Next レンジ     …     …     …     …     … End Sub Function ダミー() As long     …     …   If 何たら = かんたら Then Flag = True     …     …     … End Function これは1例ですが Do Loopや通常のFor Nextなどの場合も併せて どう書けば、スタックオーバーフロー無しに Nextに安全に飛ばせられるか? ご教示をお願い致します。 但しGo To以外でお願いします。 スパゲッティはやです 汗  

  • マクロを簡潔にしたいので教えてください。

    Sub 記入() Dim testno As String Dim testrow As Long Dim basedata(1 To 10) As String Dim weight(1 To 16) As Double Sheets("sh3").Select '(1) testno = Range("B23").Value 'No. Sheets("sh1").Select For i = 65535 To 6 Step -1 If CStr(Cells(i, 1)) = Trim(testno) Then testrow = i Exit For End If Next i If i = 5 Then MsgBox ("?") End End If For i = 1 To 10 basedata(i) = Cells(testrow, i + 1) Next i '(2) Sheets("sh2").Select For i = 65535 To 6 Step -1 If CStr(Cells(i, 1)) = Trim(testno) Then testrow = i Exit For End If Next i If i = 5 Then MsgBox ("?") End End If For i = 1 To 6 weight(i) = Cells(testrow, i + 1) Next i For i = 7 To 12 weight(i) = Cells(testrow, i + 2) Next i weight(13) = Application.WorksheetFunction.Max(weight(1), weight(2), weight(3), weight(4), weight(5), weight(6)) weight(14) = Application.WorksheetFunction.Min(weight(1), weight(2), weight(3), weight(4), weight(5), weight(6)) weight(15) = Application.WorksheetFunction.Max(weight(7), weight(8), weight(9), weight(10), weight(11), weight(12)) weight(16) = Application.WorksheetFunction.Min(weight(7), weight(8), weight(9), weight(10), weight(11), weight(12)) Sheets("sheet3").Select Cells(3, 1) = testno For i = 1 To 10 Cells(3, i + 1) = basedata(i) Next i For i = 1 To 16 Cells(3, i + 11) = weight(i) Next i Sheets("sh3").Select Erase basedata Erase weight '(1) testno = Range("B24").Value 'No. Sheets("sh1").Select For i = 65535 To 6 Step -1 If CStr(Cells(i, 1)) = Trim(testno) Then testrow = i Exit For End If Next i If i = 5 Then MsgBox ("?") End End If For i = 1 To 10 basedata(i) = Cells(testrow, i + 1) Next i '(2) Sheets("sh2").Select For i = 65535 To 6 Step -1 If CStr(Cells(i, 1)) = Trim(testno) Then testrow = i Exit For End If Next i If i = 5 Then MsgBox ("?") End End If For i = 1 To 6 weight(i) = Cells(testrow, i + 1) Next i For i = 7 To 12 weight(i) = Cells(testrow, i + 2) Next i weight(13) = Application.WorksheetFunction.Max(weight(1), weight(2), weight(3), weight(4), weight(5), weight(6)) weight(14) = Application.WorksheetFunction.Min(weight(1), weight(2), weight(3), weight(4), weight(5), weight(6)) weight(15) = Application.WorksheetFunction.Max(weight(7), weight(8), weight(9), weight(10), weight(11), weight(12)) weight(16) = Application.WorksheetFunction.Min(weight(7), weight(8), weight(9), weight(10), weight(11), weight(12)) Sheets("sh3").Select Cells(4, 1) = testno For i = 1 To 10 Cells(4, i + 1) = basedata(i) Next i For i = 1 To 16 Cells(4, i + 11) = weight(i) Next i Sheets("sh3").Select Erase basedata Erase weight この間同様文12個あり '(1) testno = Range("B37").Value If testno = "" Then End End If Sheets("sh1").Select For i = 65535 To 6 Step -1 If CStr(Cells(i, 1)) = Trim(testno) Then testrow = i Exit For End If Next i If i = 5 Then MsgBox ("?") End End If For i = 1 To 10 basedata(i) = Cells(testrow, i + 1) Next i '(2) Sheets("sh2").Select For i = 65535 To 6 Step -1 If CStr(Cells(i, 1)) = Trim(testno) Then testrow = i Exit For End If Next i If i = 5 Then MsgBox ("?") End End If For i = 1 To 6 weight(i) = Cells(testrow, i + 1) Next i For i = 7 To 12 weight(i) = Cells(testrow, i + 2) Next i weight(13) = Application.WorksheetFunction.Max(weight(1), weight(2), weight(3), weight(4), weight(5), weight(6)) weight(14) = Application.WorksheetFunction.Min(weight(1), weight(2), weight(3), weight(4), weight(5), weight(6)) weight(15) = Application.WorksheetFunction.Max(weight(7), weight(8), weight(9), weight(10), weight(11), weight(12)) weight(16) = Application.WorksheetFunction.Min(weight(7), weight(8), weight(9), weight(10), weight(11), weight(12)) Sheets("sh3").Select Cells(17, 1) = testno For i = 1 To 10 Cells(17, i + 1) = basedata(i) Next i For i = 1 To 16 Cells(17, i + 11) = weight(i) Next i End Sub

  • ExcelVBA ファイルクローズ時にエラーとなる

    次の記述で、コマンドボタン2クリックで、ブックが1つならExcelを、複数なら現在のブックを 閉じる動作をします。 Excelのバージョンが2010なら問題ありませんが、2003や2007だと、複数ブックがある時に 「問題が発生したため・・・Excelを終了します」のメッセージがでます。 Private Sub CommandButton2_Click() If Workbooks.Count > 1 Then ThisWorkbook.Close SaveChanges:=True Else ThisWorkbook.Save Application.Quit End If End Sub これの対処方法を教えてください。

  • もしも新規Excelファイルを開いてる場合は閉じる

    Excel2003です・ ユーザーが新規Excelファイル(book1)かテスト用ファイルを開いている場合は閉じる処理を考えております。 Option Explicit Dim ws As Workbook, flag As Boolean Private Sub Workbook_Open() For Each ws In Workbooks If ws.Name = "Book1" Then flag = True Next ws If flag = True Then Workbooks("Book1.xls").Close   Else   End IF For Each ws In Workbooks If ws.Name = "テスト用.xls" Then flag = True Next ws If flag = True Then Workbooks("テスト用.xls").Close   Else   End IF End Sub このコードだとBook1を開いているのに、Trueで拾ってくれません。 ws.Name = "Book1.xls"にしても同じです。 どこかおかしい部分があるのでしょうか?

  • ExcelVBA ファイルクローズ時にエラーとなる

    次の記述で、コマンドボタン2クリックで、ブックが1つならExcelを、複数なら現在のブックを 閉じる動作をします。 Excelのバージョンが2010なら問題ありませんが、2003や2007だと、複数ブックがある時に 「問題が発生したため・・・Excelを終了します」のメッセージがでます。 Private Sub CommandButton2_Click() If Workbooks.Count > 1 Then ThisWorkbook.Close SaveChanges:=True Else ThisWorkbook.Save Application.Quit End If End Sub これの対処方法を教えてください。

  • Excel Book の変更の検知

    開いているExcelBookに変更が加えられていれば、保存してBookを閉じ、変更が加えられえていなければ、保存しないでBookを閉じるようなロジックをVBAで実現したいと考えています。 そこで、Bookへ変更が加えられているかどうかの判断として使える情報、フラグのようなものがExcelBookには無いでしょうか。 私のPCのOSはXP、Excelのバージョンは2000です。

  • 選択範囲に下→上、左→右に同時に連番を振りたい

    エクセル初心者です。エクセル2010を使用しています。 エクセルで記号や数字を入力して作業をしています。 作業の方向は、基本的に下から上、右から左です。 作業の途中や、終了時点で入力の範囲の右側と下側に連番を入力するのですが、 その時点で、必要な範囲の右端列、左端列、最下段、上の段に連番を入力したいのです。 シートも範囲も変動します。50段位~になります。 基本になる連番は右端列、下の行になります。 セルの数を数えたりして、オートフィル等で連番を入力していますが、選択したらその範囲に自動的にマクロで連番をふることができたらと思って、質問させていただきました。 画像を添付いたしました。よろしくお願いします。

  • ExcelVBA Rangeの扱いについて

    お世話になります、今日2つ目の質問ですがご容赦ください。 さて、 http://oshiete.coneco.net/qa8050473.html にてFilterについてお伺いしたのですが、 1次元配列しか扱えないとの事 そこで、 これを聞いて思い出したのが、 「セルは1次元配列の羅列を内部的に一定数で折り返して2次元にしている」 と、いうWEBです。 何処のページだったかすら解らなくなっているのですが、 うつつではなかったと思います。 そこで Sub test()   Sheets("Sheet1").Cells(Rows.Count, 1).Select   Selection.Offset(1, 0).Select End Sub と、してみたのですが やはり当然というべきか駄目でした。 セルを1次元の列として VBAで扱う事は可能なのでしょうか? 但し他への入れ替え無しに… です。 (※注:クラスも無しですよ) 汗 ご教示をお願い致します。

  • Excel2010 複数シートコピーのマクロエラー

    初めて投稿します。 職場でExcel 2000 から Excel 2010へ切り替えがあり 今まで問題なく利用していたマクロがエラーになってしまいました。  修正をして使用したいのですが  マクロ初心者で色々とネットで検索して  ヒントを探ってみたものの  検索の方法がいけないようで、修正方法が見つけられない状態です。    ファイル内にいくつかのシートがあるのですが    シート名に「A」と付くシート数がその都度異なります。    そのシート「*A」とその他のシートをコピーして    新しいファイルとして保存したいのですが    コピーする段階で     【実行時エラー '-2147417848(80010108)’      Copyメゾットは失敗しました;sheetsオブジェクト】         というエラーになってしまいます。       どのように修正すればよいか  教えていただけないでしょうか。 Sub Macro3() Dim SH As Worksheet Dim strString As String Dim sSH1(10) As String Dim sSH2(30) As String Dim i As Integer Worksheets("開始").Activate   sSH1(1) = "あ"   sSH1(2) = "い"  sSH1(3) = "う"  sSH1(4) = "え"  sSH1(5) = "お"  IngCnt = 1  For Each SH In Worksheets   If SH.Name Like "*A*" Then   sSH2(IngCnt) = SH.Name  IngCnt = IngCnt + 1   End If  Next  If IngCnt = 1 Then strString = sSH1(1)   Else strString = sSH2(IngCnt - 1)  End If  For i = IngCnt To 30 sSH2(i) = strString  Next i  '↓ここでエラーになります Sheets(Array(sSH1(2), sSH1(3), sSH1(4), sSH1(5), sSH2(1), sSH2(2), sSH2(3), sSH2(4), _    sSH2(5), sSH2(6), sSH2(7), sSH2(8),sSH2(9), sSH2(10), sSH2(11), sSH2(12), _    sSH2(13), sSH2(14), sSH2(15), sSH2(16), sSH2(17), sSH2(18), sSH2(19), sSH2(20), _   sSH2(21), sSH2(22), sSH2(23), sSH2(24), sSH2(25), sSH2(26), sSH2(27), sSH2(28), _   sSH2(29), sSH2(30))).Copy ActiveWorkbook.SaveAs Filename:="C:\Users\monkey-cr\Desktop\こぴ3.xls", _ FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _ ReadOnlyRecommended:=False, CreateBackup:=False End Sub というマクロです。 自宅でも同じようにやってみたのですが やはりエラーになります。 ただコピーするシート数を減らすと問題なく動くので エラーメッセージの言うようにシート(数)に問題があるという事までは 分かったのですが 「では、どうする?」というのが…。 勉強不足ですいません。

  • ユーザ定義の表示形式で新規ブック名を作成する方法

    ExcelのVBAにて、ユーザ定義の表示形式のままで新規ブックの名前を作成する方法を教えてください。(VBA初心者です) 「2013/05/26 13:00」というデータが書かれたセルを3つのセルにそれぞれ 「年」、「月」、「日」だけを表示させるようにユーザ定義で設定しています。 それを元に「2013年アンケート(2013年5月26日実施)」という名前の新規ブックを作成したいのですが、ユーザ定義前の表示になってしまいます。 ---------------------------------------------------------- Sub 集計マクロ() ~略~ Sub 集計した結果からファイルを生成() Dim l As Long Dim m As Long Dim arrEnq(17) As String '1=ID、2=社員番号、3=氏名、4=部署、5=年、6=月、7=日、8=開始時間、9=終了時間、 ~略~ Dim strCollectionSheetName As String Dim wb As Workbook Dim ws As Worksheet Dim strEnqHinagataFileFullPath As String Dim strEnqFilePath As String Dim strEnqFileName As String '転記元シート名 strCollectionSheetName = "集計" 'テンプレファイルパス strEnqHinagataFileFullPath = ThisWorkbook.Worksheets("設定").Range("B3") '個別アンケートファイルパス strEnqFilePath = ThisWorkbook.Worksheets("設定").Range("B4") l = 1 Do While ThisWorkbook.Worksheets(strCollectionSheetName).Cells(l, 1) <> "" l = l + 1 With ThisWorkbook.Worksheets(strCollectionSheetName) arrEnq(1) = .Cells(l, 1) arrEnq(2) = .Cells(l, 2) arrEnq(3) = .Cells(l, 3) arrEnq(4) = .Cells(l, 4) ~略~ End With If arrEnq(17) = "" And arrEnq(10) <> "" Then strEnqFileName = arrEnq(5) & "年アンケート(" & arrEnq(5) & "年" & arrEnq(6) & "月" & arrEnq(7) & "日実施)_" & arrEnq(1) & ".xls" FileCopy strEnqHinagataFileFullPath, strEnqFilePath & strEnqFileName Set wb = Workbooks.Open(strEnqFilePath & strEnqFileName, ReadOnly:=False) Set ws = wb.Sheets("Sheet1") 以下略 ---------------------------------------------------------- 何かいい方法がありましたら、ご教授お願い致します。

  • VBAでエクセルをCSVに変換時

    業務上、エクセルファイルのデータをCSV変換し、他のソフトへコンバートする 作業を行う事になったのですが、初心者なので全くわからず、 ネットの力に頼ってVBAでCSV変換するコマンドまでは作成できたのですが、 コンバート先のソフトへは、以下(1)、(2)の設定が不足している事がわかりました。 現在利用しているコマンドにその機能を持たせる事は可能でしょうか。 (1)文字コードをUTF-8へ指定 (2)改行コードをLFへ指定 VBAのバージョン:VisualBasic6.5 Sub Test() Dim ws As Worksheet On Error Resume Next For Each ws In ActiveWorkbook.Worksheets ws.SaveAs ThisWorkbook.Path & "\" & ws.Name & ".csv", xlCSV Next ws End Sub 初めての質問なので内容が解りづらいと思いますが申し訳ありません。 ご回答をお待ちしております。

  • エクセルVBA テーブルのフィード名の改行について

    エクセルの "温湿度" と名前をつけたテーブルでフィード名の指定行の値を取得したい フィード名のセル内で[Alt]+[Enter]で改行をした場合のコードの書き方が分かりません 温度 [℃]    のようなフィード名にしたい Dim OndoR As Range '温度 Set OndoR = Range("温湿度[温度 '[℃']]") '温度 ↑ この行でエラーになります フィード名に [Alt]+[Enter]で改行 を使いたいのですが、どの様に記述すればエラーにならないのでしょか?

  • エクセルVBA テーブルのフィード名について

    エクセルの "温湿度" と名前をつけたテーブルでフィード名の指定行の値を取得したい Dim HidukeR As Range  '日付 Dim OndoR As Range '温度 Set HidukeR = Range("温湿度[日付]") '日付 Set OndoR = Range("温湿度[温度 [℃]]") '温度 ↑ この行でエラーになります 原因はフィード名に "[" と "]"を使っている為だとわかりました フィード名から "[" と "]"を無くしたらエラーになりません しかし、フィード名に "[" と "]" を使いたいのですが、どの様に記述すればエラーにならないのでしょか?